Docker 的常用命令合集。
  
 
Docker常用命令 官方给出的概览图,很生动形象,学完下面命令后再看此图很有帮助。
 
帮助命令 1 2 3 docker version 		# 显示docker的版本信息 docker info			# 显示docker的系统信息,包括镜像容器的数量 docker 命令 -help	 # 帮助命令 
 
还可以查看官方的命令 帮助文档 
镜像命令 docker images :查看所有本地主机上的镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@kuangshen /]# docker imagesREPOSITORY REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE hello-world         latest              bf756fb1ae65        10 months ago       13.3kB # 解释     REPOSITORY		镜像的仓库源     TAG				镜像的标签     IMAGE ID		镜像的id     CREATED			镜像的创建时间     SIZE			镜像的大小 # 可选项     -a, --a71		#列出所有镜像     -q, --quiet		#只显示镜像的id 
 
docker search (镜像名字) :搜索镜像
1 2 3 4 5 6 7 root@localhost ~]# docker search mysql NAME                              DESCRIPTION                                     STARS                mysql                             MySQL is a widely used, open-source relation…   10196               [OK]    mariadb                           MariaDB is a community-developed fork of MyS…   3753                [OK] #  可选项 通过过滤来搜索 --filter=STARS=3000 # 搜索镜像的STARS数大于3000的 
 
docker pull :下载镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #  下载镜像 docker pull 镜像名[:tag] [root@localhost ~] # docker pull mysql Using default tag: latest # 如果不写 tag,默认是 latest latest: Pulling from library/mysql 852e50cd189d: Pull complete  # 分层下载,docker image的核心 联合文件下载 29969ddb0ffb: Pull complete  a43f41a44c48: Pull complete  5cdd802543a3: Pull complete  b79b040de953: Pull complete  938c64119969: Pull complete  7689ec51a0d9: Pull complete  a880ba7c411f: Pull complete  984f656ec6ca: Pull complete 9f497bce458a: Pull complete b9940f97694b: Pull complete 2f069358dc96: Pull complete Digest: sha256:4bb2e81a40e9d0d59bd8e3dc2ba5e1f2197696f6de39a91e90798dd27299b093 # 唯一签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latestdocker.io/library/mysql:latest	# 真实地址 #  以下两个命令相互等价 docker pull mysql docker pull docker.io/library/mysql:latest   #  指定版本下载,可在docker hub上查阅版本信息 docker pull mysql:5.7 
 
docker rmi :删除镜像(rm image) 
1 2 3 docker rmi -f 镜像id # 删除指定id的镜像 docker rmi -f 镜像id 镜像id ... # 删除多个镜像 docker rmi -f $(docker images -aq) # 删除全部镜像 
 
容器命令 说明:我们有了镜像才可以创建容器,linux,下载一个 centos 镜像来测试学习
 
新建容器并启动 
1 2 3 4 5 6 7 8 9 10 11 12 docker run [可选参数] image(镜像名字) #  参数说明 --name="Name" # 容器名字 tomcat1 tomcat2,用来区分容器 -d 			  # 后台方式运行 -it			  # 使用交互方式运行,进入容器查看内容 -p			  # 指定容器的端口 	-p 主机端口:容器端口(常用) 	-p ip:主机端口:容器端口 	-p 容器端口 	容器端口 -P			  # 随机指定端口 
 
退出当前容器 
1 2 3 exit					# 停止容器并退出 快捷键:Ctrl + P + Q	  # 容器不停止并退出 
 
测试:启动并进入容器centos
1 2 3 4 5 6 7 8 9 [root@localhost ~]# docker run -it centos /bin/bash [root@1a52b837b77a /]# ls 	# 查看容器内的centos,基础版本,很多命令不完善 bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var dev  home  lib64  media       opt  root  sbin  sys  usr #  退出当前容器 [root@1a52b837b77a /]# exit exit [root@localhost ~]# 
 
列出所有运行容器 
docker ps 命令
1 2 3 4 5 docker ps # 列出当前正在运行的容器 (exit退出容器,容器不再运行)   参数: 	-a	 # 列出 当前正在运行的容器 + 历史运行过的容器 	-n=? # 显示最近创建的容器个数  	-q	 # 只显示容器的编号 
 
删除容器 
1 2 3 docker rm 容器id					# 删除指定id的容器,不能删除正在运行的容器 docker rm -f $(docker ps -aq)	 # 删除所有的容器 docker ps -a -q|xargs docker rm  # 删除所有容器 
 
启动和停止容器 
1 2 3 4 docker start 容器id		# 启动容器 docker restart 容器id		# 重启容器 docker stop 容器id		# 停止当前正在运行的容器 docker ki11 容器id		# 强制停止当前容器 
 
常用其他重要命令 以上命令是玩 docker 的基本命令,但这还远远不够。
后台启动容器 命令 : docker run -d 镜像名
问题 :启动后,docker ps 发现该容器被自动停掉。
原因:docker容器使用后台运行,就必须要有要一个前台进程 ,docker发现没有应用,就会自动停止
            安装nginx镜像,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志 命令:docker logs
1 2 3 4 5 6 7 8 #  自己编写一段shell脚本 docker run -d centos /bin/bash -c "while true;do echo dongao;sleep 1;done" docker ps  # 查看创建的正在运行的容器 CONTAINER ID        IMAGE  6e703303ac9a        centos docker logs -tf --tail 10 6e703303ac9a # 查看该id的前10条日志 
 
查看容器中进程信息 命令 docker top 容器id
查看镜像的元数据 命令 docker inspect 容器id
包含非常多的容器的基本信息,很多信息值得探讨,在以后学习中会提及到。
进入当前正在运行的容器 我们通常容器都是使用后台方式运行,我们需要进入容器,修改一些配置
方式一 :命令 docker exec -it 容器id bashShell
1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# docker ps CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES 6e703303ac9a        centos              "/bin/bash -c 'while…"   17 minutes ago      Up 17 minutes                           condescending_vaughan [root@localhost ~]# docker exec -it 6e703303ac9a /bin/bash [root@6e703303ac9a /]# ps -ef UID         PID   PPID  C STIME TTY          TIME CMD root          1      0  0 07:11 ?        00:00:00 /bin/bash -c while true;do echo dongao;sleep 1;done root       1086      0  0 07:29 pts/0    00:00:00 /bin/bash root       1110      1  0 07:29 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1 root       1111   1086  0 07:29 pts/0    00:00:00 ps -ef 
 
方式二 :docker attach 容器id
1 2 [root@localhost ~]# docker attach 6e703303ac9a 正在执行当前的代码... 
 
docker exec 和 docker attach 的 区别
docker exec:进入容器并开启一个新的终端,可以在里面操作(常用)
docker attach:进入容器正在执行的终端,不会启动新的进程。
从容器内拷贝文件到主机上 命令 :docker cp 容器id:容器内路径 主机的目的路径 
1 [root@localhost ~]# docker cp d737d4129453:/home/dongao.java /home 
 
所有命令(查阅)