本节介绍Docker的一些常用命令,有助于读者更好地排查问题及学习和管理Docker。
查看Docker版本,包括Docker版本号、API版本号、对应的Git Commit、Containerd和runC的版本信息等。
通过Docker Version命令打印出来的信息,我们需要了解几个关键名词:
查看Docker详细信息:
镜像搜索,可以使用docker search查询自己想要的镜像。OFFICIAL为OK的是官方镜像,默认搜索的是hub.docker.com。
拉取/下载镜像,默认是hub.docker.com(docker.io)上面的镜像,如果拉取公司内部的镜像或者其他仓库上的镜像,需要在镜像前面加上仓库的URL,例如:
docker pull harbor.xxx.net/frontend:v1
拉取公网上的Nginx镜像:
# 把公网上的镜像拉取到本地服务器,不指定版本号为latest # docker pull nginx Using default tag: latest latest: Pulling from library/nginx Digest: sha256:b543f6d0983fbc25b9874e22f4fe257a567111da96fd1d8f1b44315f1236398c Status: Image is up to date for nginx:latest #拉取指定版本 # docker pull nginx:1.15 1.15: Pulling from library/nginx Digest: sha256:b543f6d0983fbc25b9874e22f4fe257a567111da96fd1d8f1b44315f1236398c Status: Downloaded newer image for nginx:1.15
把本地的镜像推送到公网仓库中,或者公司内部的仓库中。
默认登录和推送的是公网的镜像,如果需要推送到公司仓库或者其他仓库,只需要在镜像前面使用tag并加上URL即可:
有时候我们需要给一个业务容器进行测试或者进行某个调试,可以使用run -ti在前台启动一个容器:
# docker run -ti nginx bash root@23bc7ccabb09:/# # 也可以使用-ti --rm参数,表示前台启动的容器退出后即删除
如果一个镜像需要一直运行,可以使用-d进行后台启动:
# docker run -tid nginx bash 1bcf5154d5c3a57d92a6796f526eac2cefd962aaca9cf4098689bfe830bb9e5e # 也可以使用--restart=always,如果容器异常自动重启
如果需要通过服务器的IP+端口访问容器的内部应用,可以使用-p进行端口映射,将本机的端口映射到容器的端口,比如将本机的1111端口映射到容器的80端口:
# docker run -ti -p 1111:80 nginx bash root@cd676d572188:/#
如果需要挂载一个本地的目录到容器,可以使用-v参数进行挂载,比如将hosts文件挂载到容器的hosts:
# docker run -ti -p 1111:80 -v /etc/hosts:/etc/hosts nginx bash root@cd676d572188:/#
查看当前正在运行的容器:
查看所有容器,包括已经退出的:
# docker ps -a
查看正在运行的容器(即显示出容器的ID):
# docker ps -q ... 0d1a98b3c402 c1fd8ff1f7f2 86b1c069024b ...
查看所有容器的ID,包括已经退出的:
# docker ps -aq ... 17019738d93d b3bb2a592dfb e0637b76afe3 0b74e028d0ae 65a1b5e1e501 ...
进入一个后台运行的容器(即之前用-d命令参数指定后台运行方式的容器):
将本机的文件复制到容器,复制支持双向复制,也支持将容器的内部文件复制到宿主机:
# docker cp README.md 92aceec0dcdd327a709bf0ec83:/tmp #exec也可直接执行容器命令 # docker exec 92aceec0dcdd327a709bf0ec83 ls /tmp/ README.md
删除已经退出的容器:
删除本机镜像,比如删除REPOSITORY或TAG为none的镜像:
区分镜像的版本可以使用tag命令给镜像打标签:
使用docker build通过Dockerfile制作镜像。注意最后的一个点(.),表示使用当前目录构建镜像:
# docker build -t image_name:image_tag .
有时候容器运行异常或者没有达到自己的效果,可以使用docker logs查看容器输出到控制台的日志(程序日志输出到控制台是容器化的最佳实践):
--tail 1从最后一行看,-f是查看实时日志,更多使用方法可以参考docker logs –h。
有时候可能需要查看镜像的层信息或者一个正在运行的容器的信息,可以使用docker inspect,比如查看一个正在运行的容器的端口信息:
当然,也可以使用docker history查看一个镜像的构建信息:
上述演示的都是Docker常用的基本命令,已可以满足日常工作需求,如果读者想要深入了解,可以参考Docker的相关资料或书籍。