Docker基础命令
本文主要基于上一片篇docker安装,来演示命令使用方法,docker安装。
1、Docker Hub搜索镜像 docker search 关键字
选项:
--automated=false:仅显示自动创建的镜像(通过Github或BitBucket仓库自动构建的镜像,直接从仓库复制一份,生成dockerfile并自动生成标记)
--no-trunc=false:输出信息不截断显示
-s,--stars=x:指定仅显示评价位指定星级以上的镜像
1)搜索centos docker search centos
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/2050fd582d745ea02ed6ef81315282a6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)搜索包含nginx关键字并且500以上星的镜像 docker search -s 500 nginx
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/3f951ee5fb4f818f5fdf6517910b2b57.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2、下载镜像 docker pull 镜像名
1)搜索包含nginx关键字并且500以上星的镜像
docker search -s 500 nginx
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/8757937b993f40980623527090dc1c31.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)从公有仓库中下载nginx镜像 docker pull nginx
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/bc8d363f0587ca42cd22fb895c274887.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)显示当前系统所有镜像 docker images
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/9b09616a812ad84a30badfaff5748017.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3、上传镜像到仓库 docker push 路径
docker push 仓库IP:仓库端口 / 准备上传的镜像名 (如下命令)
docker push 192.168.152.159:5000/httpd
4、运行容器 docker run [选项] 镜像名
选项:
-i:交互式操作
-t:分配一个tty伪终端
-d:以守护进程形式运行
1)将下载的镜像文件或本地构建的镜像文件创建为容器并运行
docker run -d docker.io/nginx
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/cc85e354218c5bac8336c4f306ec0c39.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)将下载的镜像文件或本地构建的镜像文件创建为容器,并不运行
docker create [选项] 镜像名
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/47e0eebc17085c9e9eeffdd644ee33d9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)通过httpd镜像文件创建容器并运行 docker run -it httpd:latest /bin/bash
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/3686e311b85d950456e58b754aeb029f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
4)运行容器并间隔1秒循环输出hello
docker run -it httpd:latest /bin/bash -c "while :;do echo "hello";sleep 1;done"
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/4d7b8a913994a6f16a4b408bc41191a3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
5、查看系统容器列表 docker ps
1)显示运行的容器 docker ps
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/005e1f3408512ba0b3ba79b0c3559e10.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)查看当前系统所有容器 docker ps -a
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/8737acedad141423940ea15722f08975.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
6、查看容器日志 docker logs 日志id
1)查看正在运行容器的日志id docker ps
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/d1e9d5acea6cddb4343ec9dfb0d82ee1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)查看指定id容器日志 docker logs cf3ce6d758a0
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/24/504d2694bab7ee4ecf8b01a6ee65e04f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
7、退出容器(两种方式)
1)方式一:exit或ctrl+d //退出并停止容器
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/c8372eec422829ad886fdccbac93fb7e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)方式二:ctrl+p再ctrl+q //退出伪终端,容器后台继续运行(退出后docker attach id可切换指定Docker容器)
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/5c329320b77f9e516ea6da4f1dacae66.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)切换指定Docker容器 docker attach id
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/45f2311dc549a3e8c3507c3126c7231f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
8、删除容器 docker rm id
1)强制删除正在运行的容器 docker rm -f 52eef72d268a
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/e5c622381079c1b9f66ede305475d8d9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/547688f7920fc38e33c9c0abab2c4de8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)删除nginx标记为1的镜像 docker rmi nginx:1
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/182d988b2ae1adec3828b34bfe91c56d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
9、运行、停止、重启、杀死容器
1)运行容器 docker start 45f6f82934ed
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/dfded68c6d38e1cdb0645aa0b2c0fde7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
//创建容器 docker run -it docker.io/httpd /bin/bash
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/d80b9f38c627bbf1a08b8f26af65d5a2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
//运行指定id容器 docker start eaa21f17f6a7
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/46b904d3b5b47c134eaf2a97eaf8c01b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)停止容器 docker stop eaa21f17f6a7
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/53d701623aa6ad7cfcc83b5f2baa6979.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)重启容器 docker restart eaa21f17f6a7
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/9508cad99c929b932191caf836d8240f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
4)杀死容器 docker kill eaa21f17f6a7
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/93743596bd3afd483933296077705e4e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
10、存储、载入镜像
1)存储镜像 docker save -o 目标tar文件 镜像文件:标记
docker save -o nginx_1.tar docker.io/nginx
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/a98239635f8e2ba422337b8e7fa57fc6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)载入镜像 docker load < tar文件
//查看并删除指定镜像 docker rmi -f nginx:latest
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/f923626bfce49047eb922dbf100aa498.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
//载入镜像(之前做过存储在/root/目录下) docker load <nginx_1.tar
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/da6793de7ae6a21fc91b7e53fe94fad9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
11、导出容器快照 docker export -o 目标tar文件 id
将容器当前状态导出到快照文件,可通过该文件拷贝到其余服务器导入到仓库中(与直接导入导出镜像存储文件相比,快照导入导出更小,但快照将丢弃所有的历史记录和容器当前运行状态)
//创建测试文件 touch hehe
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/a57e1d18baecc29b6006a7b2dafa411a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
//查看当前所有容器 docker ps -a
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/1256b2595c644ebcdde7d330af5c7e9e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
//将指定id容器导出快照文件 docker export -o nginx_hehe.tar 611f157876fd
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/3fe522f795b7228939fe028b8767a0ab.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
12、导入本地容器快照
cat 本地容器快照名 | docker import - 自定义容器名:自定义标记名
1)通过快照文件导入为镜像文件
cat nginx_hehe.tar | docker import - nginx:aaa
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/80b9b28a8299d83578a5e6ed2838dccd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)还原并查看快照文件
创建容器并运行 docker run -it nginx:aaa /bin/bash
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/25/0cee74c887df393bfcca2dabda5830e8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
13、Docker网络配置
端口映射(外部访问容器应用)
启用容器时,如不指定对应参数,容器的外部是无法通过网络访问容器内部应用和服务,这时可通过-P或-p参数指定端口映射。
1)-P:docker随机映射一个/proc/sys/net/ipv4/ip_local_port_range中定义的端口范围作为一个本地端口,随后将这个本地端口映射到容器内部开放的网路端口。
//查看镜像文件 docker images
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/29/7549785742fc713a556d1a8f8bb0be76.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
//使用-P创建容器并随机映射端口 docker run -d -P docker.io/tomcat
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/29/b126b877d777281fc997689a6d2cba54.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/29/be58c90bd422bc55e87afa898b5d477d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2)-p:指定需要映射的端口,并且一个指定端口上只可绑定一个容器。
//查看镜像文件 docker images
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/29/e28aeb1d953a9cae5b4ccaa84018b0a5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
//使用-p创建容器并将容器60端口映射到192.168.152.159的60端口
docker run -d -p 192.168.152.159:60:60 docker.io/tomcat
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/29/6b3955c1d6a7c9b922c8603582f9c09d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3)创建并将容器90端口映射到192.168.152.159的任意端口
//查看镜像文件 docker images
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/29/7e667a1b4b141d8c9da66161e91a713d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
//创建并将容器90端口映射到192.168.152.159的任意端口
docker run -d -p 192.168.152.159::90 docker.io/tomcat
![Docker基础命令使用](https://s1.51cto.com/images/blog/201805/29/ae2f9ebace0b8f8e68966494a8c2e641.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
注:以上截图为基本操作步骤,仅供参考!