Docker常用命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #帮助命令
镜像命令
#1、查看所有本地主机上的镜像
docker images
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zookeeper 3.4.14 721354d41dae 7 days ago 257MB
redis latest bd571e6529f3 7 days ago 104MB
mysql 5.7 42cdba9f1b08 8 days ago 448MB
centos latest 0d120b6ccaa8 2 months ago 215MB
store/elastic/filebeat 6.8.9 b44b5f67db90 5 months ago 281MB
flink 1.10.0-scala_2.11 2585924d4457 6 months ago 598MB
hello-world latest bf756fb1ae65 9 months ago 13.3kB
kibana 6.8.4 e7c11052ed4f 12 months ago 817MB
elasticsearch 6.8.4 25476914cc66 12 months ago 955MB
wurstmeister/kafka 2.12-2.2.0 c364cbed5b86 18 months ago 421MB
#解释
REPOSITORY #镜像的仓库源
TAG #镜像的标签
IMAGE ID #镜像的ID
CREATED #镜像的创建时间
SIZE #镜像的大小
#可选项(添加在images后面)
-a, --all #列出所有镜像
-q, --quiet #只显示镜像的ID
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker images -q
721354d41dae
bd571e6529f3
42cdba9f1b08
0d120b6ccaa8
b44b5f67db90
2585924d4457
bf756fb1ae65
e7c11052ed4f
25476914cc66
c364cbed5b86
#2、搜索镜像
docker search mysql #搜索mysql镜像
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10084 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3696 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 737 [OK]
percona Percona Server is a fork of the MySQL relati… 511 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 83
mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 77
centurylink/mysql Image containing mysql. Optimized to be link… 60 [OK]
。。。。。
#可选项(添加在mysql后面)
--filter=STARS=3000 #会去找收藏数大于3000的镜像
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10084 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3696 [OK]
#3、下载镜像
docker pull 镜像名[:tag] #tag是版本(注意是docker hub中有的), 不写的话默认是latest
#4、删除镜像
docker rmi -f IMAGE ID #删除指定的容器
docker rmi -f IMAGE ID IMAGE ID IMAGE ID #删除多个容器
docker rmi -f $(docker images -aq) #删除全部的容器
容器命令
说明:有了镜像才可以创建容器 ,下载一个centos镜像来测试学习
docker pull centos
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
Status: Image is up to date for centos:latest
docker.io/library/centos:latest
#1、启动容器
docker run [可选参数] image
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker run -it --name testCentos centos /bin/bash
[root@f51600bdebc0 /]#
#参数说明
--name Name #容器名字 用来区分容器
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P #随机指定端口
#2、测试,启动并进入容器
docker run -it centos /bin/bash #/bin/bash是linux下的控制台位置
然后root旁边的东西会变成镜像的ID #[root@f51600bdebc0 /]#
#3、从容器中退回主机
exit
[root@f51600bdebc0 /]# exit
exit
#4、列出所有运行的容器
docker ps
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS MES
3d93cd8f91a4 42cdba9f1b08 "docker-entrypoint.s…" 5 days ago Up 5 days 3306/tcp, 33060/nderful_pascal
304010b547f4 centos "/bin/bash" 6 days ago Up 6 days ntos02
e2ce4f39344b centos "/bin/bash" 6 days ago Up 6 days ntos01
4f7674333b67 centos "/bin/bash" 6 days ago Up 6 days
#可选项(添加在ps后面)
空 #列出当前正在运行的容器
-a #列出当前正在运行的容器+未运行的容器(被删除的容器将不再显示)
-n=? #显示最近创建的容器
-q #只显示容器的编号
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker ps -q
304010b547f4
e2ce4f39344b
4f7674333b67
d89d299fd40b
#5、退出容器
exit #直接容器停止并退出
Ctrl + P + Q #容器不停止退出
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker exec -it testCentos /bin/bash
[root@f51600bdebc0 /]# read escape sequence
# 然后按了 Ctrl + P + Q
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f51600bdebc0 centos "/bin/bash" 6 minutes ago Up About a minute testCentos
#6、删除容器
docker rm 容器ID #删除指定的容器,不能删除正在运行的容器
docker rm $(docker ps -aq) #删除所有的容器
#7、启动和停止容器的操作
docker start 容器ID #启动容器
docker restart 容器ID #重启容器
docker stop 容器ID #停止当前正在运行的容器
docker kill 容器ID #强制停止当前容器
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker start testCentos
testCentos
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker stop 3d93cd8f91a4
3d93cd8f91a4
常用其他命令
#1、后台启动容器
docker run -d 镜像名
#问题 docker ps, 发现 centos停止了
#常见的坑, docker容器使用后台运行, 就必须要有一个前台(控制台)进程,docker发现没有应用,就会自动停止
#所以要先载入一个容器并运行bash,再 用Ctrl + P + Q 使容器不停止退出,接着便可以进行别的操作了。
#nginx, 容器启动后, 发现自己没有提供服务, 就会自动停止,就是没有程序了
#2、查看日志
docker logs -f -t --tail 容器ID,(这时没有日志)
#所以先自己编写一个shell脚本
docker run -d centos /bin/sh -c "while true;do echo zhuge;sleep 1;done"
docker ps
#然后会显示出正在运行的容器ID
#显示日志
-tf #显示日志
--tail number #要显示日志条数
docker logs -tf --tail 10 容器ID
#3、查看容器中进程信息
docker top 容器id
[root@iZuf61n8ywv9zx27oeoajoZ ~]# docker top f51600bdebc0
UID PID PPID C STIME TTY TIME CMD
root 27387 27370 0 19:34 pts/0 00:00:00 /bin/bash
root 27505 27370 0 19:34 ?
#4、查看容器的元数据
# 包括挂载目录等等
docker inspect 容器ID
#5、进入当前正在运行的容器
#方式一
docker exec -it 容器ID /bin/bash(bashshell)
#进入容器后开启一个新的终端,可以在里面操作(常用)
#进入容器之后 , 可以使用 cd /etc/文件名 来查看对应容器的配置文件等
[root@iZuf61n8ywv9zx27oeoajoZ /]# docker exec -it 3d93cd8f91a4 /bin/bash
root@3d93cd8f91a4:/# cd /etc
root@3d93cd8f91a4:/etc# ls
X11 debian_version group- issue localtime mtab passwd- rc4.d selinux systemd
adduser.conf default gshadow issue.net logcheck mysql perl rc5.d shadow terminfo
。。。。
#方式二
docker attach 容器ID
#进入容器正在执行的终端, 不会启动新的进程!
#6、从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径 #注:要退出容器后再操作