1、帮助命令
docker version # 显示版本信息
docker info # 显示系统信息
docker 命令 --help # 万能命令
帮助文档地址:https://docs.docker.com/reference/
2、镜像命令
docker images 查看所有本地的主机上的镜像
# 命令
docker images [参数]
# 测试
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 6 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a,--all # 列出所有镜像
-q,--quiet # 只显示镜像的id
docker search 搜索镜像
# 命令
docker search 镜像名
# 测试
docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11413 [OK]
# 可选项,通过收藏来过滤
--filter=STARS=3000 #搜索出来的进行是stars>3000
docker pull 下载镜像
# 命令
docker pull 镜像名[:tag]
# 测试
docker pull mysql
Using default tag: latest # 如果不写tag,默认最新版
latest: Pulling from library/mysql
a330b6cecb98: Pull complete # 分层下载,docker images的核心 联合文件系统
9c8f656c32b8: Pull complete
88e473c3f553: Pull complete
062463ea5d2f: Pull complete
daf7e3bdf4b6: Pull complete
1839c0b7aac9: Pull complete
cf0a0cfee6d0: Pull complete
1b42041bb11e: Pull complete
10459d86c7e6: Pull complete
b7199599d5f9: Pull complete
1d6f51e17d45: Pull complete
50e0789bacad: Pull complete
Digest: sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c # 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
# 指定版本号
docker pull mysql:5.7
5.7: Pulling from library/mysql
a330b6cecb98: Already exists # 分层下载,已经下载过的就不会重新下载了,极大的节省了内存空间
9c8f656c32b8: Already exists
88e473c3f553: Already exists
062463ea5d2f: Already exists
daf7e3bdf4b6: Already exists
1839c0b7aac9: Already exists
cf0a0cfee6d0: Already exists
fae7a809788c: Pull complete
dae5a82a61f0: Pull complete
7063da9569eb: Pull complete
51a9a9b4ef36: Pull complete
Digest: sha256:d9b934cdf6826629f8d02ea01f28b2c4ddb1ae27c32664b14867324b3e5e1291
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
分层下载:
同样的部分就不用重新下载了
docker rmi 删除镜像
docker rmi -f 镜像id # 删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像
docker rmi -f $(docker images -aq) # 删除所有镜像
3、容器命令
说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
# 命令
docker pull centos
新建容器并启动
# 命令
docker run [可选参数] image
# 参数说明
--name="name" # 容器名字,用于区分容器
-d # 后台运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P #随机指定端口
# 测试
# 启动并进入容器
docker run -it centos /bin/bash
# 查看文件
ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
退出容器
# 命令
exit
ctrl+p+q # 不停止退出
# 测试
exit
列出运行中容器
# 命令
docker ps [参数]
# 测试
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
867803bad084 centos "/bin/bash" 2 minutes ago Exited (0) 45 seconds ago zealous_kepler
a3a7fe3ced34 d1165f221234 "/hello" 5 hours ago Exited (0) 5 hours ago naughty_thompson
# docker ps 参数说明
[空] # 列出当前正在运行容器
-a # 列出历史运行容器
-n=? # 显示最近创建的容器
-q # 只显示容器的编号
删除容器
# 命令
docker rm 容器id # 删除指定的容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq) # 删除所有容器
docker pas -a -q|xargs docker rm# 删除所有容器
启动和停止容器操作
# 命令
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止容器
docker kill 容器id # 强制停止当前容器容器
4、其它命令
后台启动容器
# 命令
docker run -d centos # 后台启动
# 问题docker ps,发现centos停止了
# docker容器使用后台运行,就必须要有一个前台进程,coker发现没有应用,就会自动停止
查看日志
# 命令
docker logs -f -t --tail 容器id
# 测试
# 自己写一段shell脚本
docker run -d centos /bin/sh -c "while true;do echo minami;sleep 1;done"
b7c347f48b8456c3fe221dcc8e678883b9bf69ba5577ccce4411ef70b51e90cc
docker ps
CONTAINER ID IMAGE
b7c347f48b84 centos
# 显示日志
docker logs -tf --tail 10 b7c347f48b84
2021-09-15T10:00:09.268501380Z minami
2021-09-15T10:00:10.276046490Z minami
2021-09-15T10:00:11.283815908Z minami
2021-09-15T10:00:12.289497916Z minami
2021-09-15T10:00:13.295453048Z minami
2021-09-15T10:00:14.300217362Z minami
2021-09-15T10:00:15.304434664Z minami
2021-09-15T10:00:16.314160129Z minami
# 参数说明
-tf # 显示日志
--tail number # 要显示日志条数
查看容器中进程信息
# 命令
docker top 容器id
# 测试
docker top b7c347f48b84
UID PID PPID C STIME TTY TIME CMD
root 23477 23459 0 17:59 ? 00:00:00 /bin/sh -c while true;do echo minami;sleep 1;done
root 24080 23477 0 18:04 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
查看镜像的元数据
# 命令
docker inspect 容器id
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
# 方式一
docker exec -it 容器id
# 测试
docker exec -it b7c347f48b84 /bin/bash
ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
# 方式二
docker attach 容器id
# 测试
docker attach b7c347f48b84
正在执行的代码...
# docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach # 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
# 命令
docker cp 容器id:文件路径 主机文件路径
# 测试
docker cp b2460c48fb55:/root/minami.java minami.java
ls
anaconda-ks.cfg minami.java software
# 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现