Docker command
Opened this issue · 0 comments
lqshow commented
基本命令
查看客户端所有命令
docker
查看docker版本
docker version
显示docker系统信息
docker info
登录registry server
docker login
查看 Docker 磁盘使用情况
# 查看占用分布
docker system df
# 进一步查看空间占用细节,以确定是哪个镜像、容器或本地卷占用过高空间
docker system df -v
清理 Docker 空间
# 清除所有未被使用的镜像和悬空镜像
docker system prune -a
# 强制删除
docker system prune -f
# 删除悬空的镜像
docker image prune
# 删除无用的容器
docker container prune
容器部分
创建容器
检查本地是否存在centos镜像,不存在,链接官方,自动下载带本地宿机
容器名是随机的
如果不指定一个镜像的版本标签,例如你只使用centos,Docker将默认使用centos:latest镜像
容器的命名必须是唯一的
创建随机名容器,并运行centos的终端
# -it表示前端运行
docker run -it centos /bin/bash
创建一个名为test的容器:
docker run —-name test -it ubuntu /bin/bash
后端运行并映射80端口
docker run -dt -p 80:80 --name app_port basebit/xdp-sdk-jre8
自动重启容器
docker run --restart=always --name test
设置环境变量
docker run --rm -it --name test \
--env MYHOME=/home \
--env TEST=/home \
--env PATH=$PATH:/home \
centos bash
Comand Options
options | desc |
---|---|
-i | 保证容器中的STDIN是开启的 |
-t | 为要创建的容器分配一个伪tty终端 |
-d/--detach | 后台运行容器,并返回容器ID |
--name | 指定容器名称 |
-e | 设置环境变量 |
--link | 链接到另外一个容器 |
--rm | 当容器退出时自动删除它 |
-v/--volume | 挂载数据卷(映射的卷),可以使用多次,即挂载多个数据卷 |
--restart | 重启策略( unless-stopped|always) |
-p/--publish | 控制Docker在运行时应该公开哪些网络端口给外部(宿主机) |
-P | 对外公开在Dockerfile中的EXPOSE指令中设置的所有端口 |
--hostname | 设置容器host |
查看容器
列出正在运行的容器
docker ps
列出全部容器
docker ps -a
最后一次运行的容器
docker ps -l
获取容器元数据
docker inspect CONTAINER
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' CONTAINER
查看容器进程
docker top CONTAINER
查容器的端口映射
docker port CONTAINER
查看容器日志
docker logs CONTAINER
# 跟踪日志输出, 效果类似于tail -f
docker logs -f CONTAINER
# 获取日志最后10行
docker logs --tail 10 CONTAINER
# 获取最新日志
docker logs -ft --tail 0 CONTAINER
# 匹配日志
docker logs CONTAINER 2>&1| grep "ERROR"
导出容器快照到本地镜像
docker export CONTAINER > XOS.tar
导入容器快照为镜像
# 本地容器
cat XOS.tar | docker import - lqshow/test:v1.0
# 网络容器
docker import http://example.com/exampleimage.tgz lqshow/test:v2.0
从容器里拷贝文件到本地
docker cp a136a050da25:/home/file.txt ./
从本地拷贝文件到容器里
docker cp Dockerfile xdp-workspace-api:/data/project/service/logs/workspace/
容器重名
docker rename CONTAINER NEW_NAME
停止、启动、杀死、重启一个容器
docker stop CONTAINER
docker start CONTAINER
docker kill CONTAINER
docker restart CONTAINER
删除容器
运行中的容器是不能删除的,必须先stop或者kill
删除单个容器
docker stop CONTAINER && docker rm CONTAINER
删除所有容器
docker rm 'docker ps -a -q'
删除所有退出的容器
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
进入容器
附加到一个运行的容器上面(前提是此Container已经运行中)
命令输完后,需按下回车才能进入该会话
退出容器(不关闭容器):Ctrl+P+Q
退出容器(关闭):exit
docker attach CONTAINER
运行交互式的容器
# 在容器中打开交互式任务
docker exec -it a136a050da25 /bin/bash
# 以root权限进入容器
docker exec -it -u root docker-jenkins /bin/bash
在运行的容器中执行命令
在容器内创建空文件
docker exec -d a136a050da25 touch /home/new_file
查看环境变量
docker exec -it 7984cfc7d174 env
查看host文件
docker exec -it 7984cfc7d174 cat /etc/hosts
镜像部分
结构
仓库名/镜像名:标签
如果没指定任何标签,Docker自动为镜像设置一个latest标签
列出所有镜像
docker images
查找现有镜像(来源:Docker hub公共的可用镜像)
docker search image_name
下载镜像
docker pull image_name
docker pull docker-reg.basebit.me:5000/basebit/xdp-sdk-jre8
重命名镜像
docker tag image_name new_image_name
删除镜像
删除一个镜像
docker rmi image_name
删除多个镜像
docker rmi image_name image_name2
删除所有镜像
docker rmi `docker images -a -q`
删除none镜像
# 停止容器
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
# 删除容器
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
# 删除镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')
获取镜像的创建历史
docker history image_name
发布镜像到Docker Hub
docker push lqsow/static_web
批量删除repository ,tag 为none 的镜像
docker images |grep none|awk '{print $3}'|xargs docker rmi
保存(导出)镜像
docker save <image_id> > <image_name>.tar
加载(导入)镜像
docker load < img_java.tar