本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来。
根据自己的理解,总的来说分为以下几种:
- Docker环境信息 —
docker [info|version]
- 容器生命周期管理 —
docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
- 容器操作运维 —
docker [ps|inspect|top|attach|wait|export|port|rename|stat]
- 容器rootfs命令 —
docker [commit|cp|diff]
- 镜像仓库 —
docker [login|pull|push|search]
- 本地镜像管理 —
docker [build|images|rmi|tag|save|import|load]
- 容器资源管理 —
docker [volume|network]
- 系统日志信息 —
docker [events|history|logs]
一、常用命令
1、显示 Docker 版本信息
docker version
2、显示 Docker 系统信息,包括镜像和容器数
docker info
3、帮助
docker --help
二、镜像管理
1、列出镜像
docker images
2、获取一个新的镜像
docker pull nginx:1.18.0
3、查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。
docker search httpd
4、删除镜像
docker image rm 镜像名标签或者ID
5、镜像导入与导出
方法一: docker save image:tag > xxx.tar # save导出.tar docker load < xxx.tar # load导入镜像 方法二: docker export image > xxx.tar # export导出成.tar cat xxx.tar | sudo docker import - image:tag # import导入镜像
注:两种方法不可混用
三、容器生命周期
1、运行容器
docker run -it nginx:latest sh # -d: 后台运行容器 -i:以交互模式运行容器 -t:为容器重新分配一个伪输入终端 -it常一起使用 # -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 --name="nginx-lb":为容器指定一个名称 # -v: 挂载目录 -e username="ritchie":设置环境变量 -env-file=[]:从指定文件读入环境变量
2、启动被停止的容器
docker start 容器名或ID
3、停止运行中的容器
docker stop 容器名或ID
4、重启容器
docker restart 容器名或ID
5、杀掉运行中的容器
docker kill -s KILL 容器名或者ID
6、删除容器
docker rm 容器名或ID
7、暂停容器中所有进程
暂停数据库容器db01提供服务: docker pause db01
8、启动容器中所有进程
恢复数据库容器db01提供服务: docker unpause db01
9、运行的容器中执行命令
docker exec -it 容器名或ID sh # -d:分离模式,在后台运行 -i:即使没有附加也保持打开 -t:分配一个伪终端
10、删除所有停止状态的容器
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
四、容器操作
1、列出容器
docker ps # 参数 -a:显示所有的容器 -f:根据条件过滤显示 -l:显示最近创建的容器 # 参数 -q:静默模式,只显示容器编号 -s:显示总的文件大小。
2、获取容器/镜像的元数据
docker inspect 容器名或ID | grep IPAddress 显示容器的IP
3、获取容器的日志
docker logs # 参数: -f:跟踪日志输出 --since:显示某个开始时间的所有日志 -t:显示时间戳 --tail:仅列出最新N条容器日志
4、查看容器的端口映射情况
docker port 容器名或ID
五、rootfs命令
1、容器中创建一个新的镜像
docker commit -a "作者" -m "说明文字" 容器名或ID 镜像名:标签
2、容器与主机之间数据拷贝
docker cp /datadir xxx:/datapath # 主机/datadir目录拷贝到容器xxx中,目录重命名为/datapath
3、检查容器中文件结构的更改
docker diff mymysql # 查看容器mymysql的文件结构更改
六、镜像仓库
1、登陆到Docker镜像仓库
docker login -u 用户名 -p 密码 # 登陆到Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub
2、登出Docker镜像仓库
docker logout # 登出Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
3、从镜像仓库拉取镜像
docker pull java:latest # 拉去镜像库最新的java镜像
4、将镜像上传到镜像仓库
docker push java:latest # 上传本地镜像java:latest到镜像仓库中
5、从Docker Hub查找镜像
docker search 参数: --automated:只列出 automated build类型的镜像 --no-trunc :显示完整的镜像描述 -s :列出收藏数不小于指定值的镜像。
例1:使用docker安装并启动nginx
docker run -d --name nginx -p 80:80 -v /root/nginx/html:/usr/share/nginx/html nginx:1.18.0
例2:安装并运行Jenkins
chenshifengdeMacBook-Pro:~ chenshifeng$ docker volume create jenkins_shifeng jenkins_shifeng chenshifengdeMacBook-Pro:~ chenshifeng$ docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_shifeng:/var/jenkins_home jenkins/jenkins:lts