Docker 的常用命令
快速查看
port # 查看映射端口对应的容器内部源端口
pause # 暂停容器
ps # 猎户容器列表
pull # 从docker镜像源服务器拉取指定镜像或者库镜像
push # 推送指定镜像或者库镜像至docker源服务器
restart # 重启运行的容器
rm # 移除一个或多个容器
rmi # 移除一个或多个镜像 (无容器使用该镜像才可删除,否则需要删除相关容器才可继续或 -f 强制删除)
run # 创建一个新的容器并运行一个命令
save # 保存一个镜像为一个 tar 包【对应 load】
search # 在 docker hub 中搜索镜像
start # 启动容器
stop # 停止容器
tag # 给源中镜像打标签
top # 查看容器中运行的进程信息
unpause # 取消暂停容器
version # 查看 docker版本号
wait # 截取容器停止时的退出状态值
帮助命令
docker version 显示docker的版本信息
docker info 显示docker的系统信息 包括镜像和容器的数量
docker 命令 --help 帮助命令
帮助文档的地址:使用 Docker 命令行|Docker 文档
镜像命令
docker images 查看所有本地的主机上的镜像
[root@rui ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 3 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a, --all # 显示所有的镜像
-q, --quiet #只显示镜像的id
docker search搜索镜像
[root@rui ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11848 [OK]
mariadb MariaDB Server is a high performing open sou… 4521 [OK]
# 可选项 通过搜索来过滤
–filter-STARS=3000 搜索出来的镜像就是STARS大于3000的
[root@rui ~]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11848 [OK]
mariadb MariaDB Server is a high performing open sou… 4521 [OK]
[root@rui ~]# docker search mysql --filter=STARS=5000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11848 [OK]
docker pull 下载镜像
# 下载镜像 docker pull 镜像名[:tag]
[root@rui ~]# docker pull mysql
Using default tag: latest # 如果不写tag ,默认就是latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete # 分层下载,docker image的核心 联合文件系统
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
docker pull mysql 等价于 docker pull docker.io/library/mysql:latest
# 指定版本下载
[root@rui ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker rmi 删除镜像
[root@rui ~]# docker rmi -f 镜像id 删除指定的镜像
[root@rui ~]# docker rmi -f 镜像id 镜像id 镜像id 删除多个镜像
[root@rui ~]# docker rmi -f $(docker images -aq) 删除全部的镜像
容器命令
🛰 说明:我们有了镜像才可以创建容器,Linux ,下载一个centos镜像来测试学习
docker pull centos:7
新建容器并启动
docker run [可选参数] image
# 参数说明
--name=“Name” 容器名字 tomcat01 tomcat02 ,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (常用)
-p 容器端口
-P 随机指定端口
测试启动容器并进入容器
[root@rui ~]# docker run -it centos:7 /bin/bash
[root@51ccddde3493 /]# ls 查看容器内部的centos基础版本,很多命令都不完善
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
退出容器
[root@51ccddde3493 /]# exit
exit
列出所有的运行的容器
# docker ps 命令
# 列出当前正在运行的容器
-a # 列出当前正在运行的容器+带出历史运行过得容器
-n=?# 显示最近创建的容器
-q # 只显示容器的编号
[root@rui ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@rui ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51ccddde3493 centos:7 "/bin/bash" 10 minutes ago Exited (0) 4 minutes ago dazzling_kalam
3059907cda01 feb5d9fea6a5 "/hello" 2 days ago Exited (0) 2 days ago flamboyant_swanson
退出容器
exit #直接容器停止并退出
ctrl + p + q # 容器不停止退出
删除容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果强制删除 rm -f
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -a -q | xargs docker rm # 删除所有容器
启动和停止容器的操作
docker start 1678b91c80f1 # 启动容器
docker restart 1678b91c80f1 # 重启容器
docker stop 1678b91c80f1 # 停止当前正在运行的容器
docker kill 1678b91c80f1 # 强制停止当前容器
常用的其他命令
后台启动容器
# 命令docker run -d 镜像名
[root@rui ~]# docker run -d centos:7
# 问题docker ps, 发现centos 停止l
# 常见的坑:docker 容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自己自动停止
# 安装nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -f -t --tail 行数 容器,没有日志
# 自己编写一段shell脚本
[root@rui ~]# docker run -d centos:7 /bin/bash -c"while true;do echo kuangshi;sleep 1;done"
[root@rui ~]# docker ps
CONTAINER ID IMAGE
1803bdab3c81 centos:7
# 显示日志
-tf #显示日志
--tail 行数 #要显示日志的条数
[root@rui ~]# docker logs -tf 1803bdab3c81
[root@rui ~]# docker logs -tf --tail 10 1803bdab3c81
查看容器中进程信息ps
命令 docker top 容器id
[root@rui ~]# docker top acc862808488
UID PID PPID C STIME TTY root 10766 10748 0 17:05 pts/0
查看容器元数据
[root@rui ~]# docker inspect --help
Usage: docker inspect [OPTIONS] NAME|ID [NAME|ID...]
Return low-level information on Docker objects
Options:
-f, --format string Format the output using the given Go template
-s, --size Display total file sizes if the type is container
--type string Return JSON for specified type
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行,需要进入容器,修改配置
# 命令
docker exec -it 容器id bashshell
# 测试
[root@rui ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS N AMES
acc862808488 centos:7 "/bin/bash" 2 days ago Up 3 seconds s toic_wozniak
[root@rui ~]# docker exec -it acc862808488 /bin/bash
[root@acc862808488 /]# ls
anaconda-post.log dev home lib64 mnt proc run srv tmp var
bin etc lib media opt root sbin sys usr
# 方式二
docker attach 容器id
# 测试
[root@rui ~]# docker attach acc862808488
[root@acc862808488 /]#
正在执行当前的代码。。
# docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach # 进入容器正在执行的终端,不会启动新的进程
从容器拷贝文件到主机
docker cp 容器id:容器内路径 目标主机路径
# 进入docker容器
[root@rui home]# docker attach 240db4545d1e
[root@240db4545d1e /]# cd /home/
# 创建一个文件
[root@240db4545d1e home]# touch 6.txt
[root@240db4545d1e home]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 29 09:46 6.txt
# 退出容器,把文件拷贝到主机上
[root@rui home]# docker cp 240db4545d1e:/home/6.txt /home/
[root@rui home]# ll
总用量 0
-rw-r--r-- 1 root root 0 12月 29 17:46 6.txt
-rw-r--r-- 1 root root 0 12月 29 17:43 kuangsheng.jar
# 拷贝是一个手动过程 未来我们使用 -V 卷的技术。可以实现