Docker // 是一个 Client - Server 结构
推荐视频:【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili
帮助命令
帮助文档:https://docs.docker.com/reference
Docker 命令 --help # 万能命令
Docker version # 查看版本
Docker info # 显示docker的系统信息 包括镜像和容器数量
Docker run xxx # 运行本机指定镜像
镜像命令
docker images // 镜像命令
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 13 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a, --all # 列出所有镜像
-q, --quiet # 只显示镜像ID
docker search // 搜索镜像
[root@localhost ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 13345 [OK]
mariadb MariaDB Server is a high performing open sou… 5098 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 657 [OK]
percona Percona Server is a fork of the MySQL relati… 592 [OK]
# 可选项
--filter=STARS=3000 # 搜索出来的镜像就是STARS大于3000的
[root@localhost ~]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 13345 [OK]
mariadb MariaDB Server is a high performing open sou… 5098 [OK]
docker pull // 下载镜像
# 下载镜像 docker pull 镜像名[:tag] // 版本
[root@localhost ~]# docker pull mysql
Using default tag: latest # 如果不写版本 tag 默认就是laster
5ed150ed0abe: Pull complete # 分层下载 docker image 的核心 联合文件系统
0fede58e17ac: Pull complete
994a6ddd6efe: Pull complete
028bda79779b: Pull complete
426fbe9e56a2: Pull complete
1a00e58dd193: Pull complete
4a4f64494005: Pull complete
fba8ab3534a7: Pull complete
2695938edf88: Pull complete
3754e2587bed: Pull complete
1b9f154543e7: Pull complete
Digest: sha256:147572c972192417add6f1cf65ea33edfd44086e461a3381601b53e1662f5d15
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
# 等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest
# 指定版本下载
[root@localhost ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
0056409b8e89: Pull complete
219bd535343d: Pull complete
f220ee65eb90: Pull complete
7bbb395b2290: Pull complete
645e487e5f0a: Pull complete
a9fa38d2e1fb: Pull complete
e1d9f4f7e8b4: Pull complete
e03fcfe5d90e: Pull complete
74c4d4272e30: Pull complete
e3a8ad6eeebe: Pull complete
919524a8718b: Pull complete
Digest: sha256:94176d0ad4ed85767fc0d74b8071387109a0390e7c1afd39788269c96d2dad74
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
docker rmi // 删除镜像
[root@localhost ~]# docker rmi -f 容器ID # 删除指定的容器
[root@localhost ~]# docker rmi -f 容器ID 容器ID 容器ID 容器ID # 删除多个的容器
[root@localhost ~]# docker rmi -f $(docker images -aq) # 删除全部容器
容器命令
说明:我们有了镜像才可以创建容器 linux 下载一个 centos 镜像来测试学习
docker pull centos
docker run [可选参数] image // 新建容器并启动
# 参数说明
--name="Name" # 容器名字 tomcat01 tomcat02 用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行 进入容器查看内容
-p # 指定容器的端口 -p 8080:8080 (小写p)
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (常用)
-p 容器端口
-P # 随机指定端口 (大写P)
# 测试
[root@localhost ~]# docker run -it centos /bin/bash # 启动并进入容器
[root@6d1dad4f7880 /]# ls # 容器内的centos 基础版本 很多命令都是不完善的!
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
# 从容器中退回主机
[root@6d1dad4f7880 /]# exit
exit
[root@localhost ~]# ls
公共 视频 文档 音乐 anaconda-ks.cfg
模板 图片 下载 桌面 initial-setup-ks.cfg
列出所有运行中的容器 // docker ps
# docker ps 命令
# 列出当前整个在运行的容器
-a # 列出当前整个在运行的容器 + 历史运行过的容器
-n=? #列出最近创建的容器
-q # 只显示容器的编号
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d1dad4f7880 centos "/bin/bash" 3 minutes ago Exited (0) About a minute ago cranky_poitras
退出容器
exit # 直接容器停止并退出
Ctrl + P + Q # 容器不停止退出
删除容器 // docker rm
docker rm 容器ID # 删除指定容器 不能删除正在运行的容器
docker rm -f $(docker ps -aq) # 删除所有的容器 强制删除 可以删除正在运行的
docker ps -a -q|xargs dcoker rm # 删除所有的容器
启动和停止容器的操作
docker start 容器ID # 启动容器
docker restart 容器ID # 重启容器
docker stop 容器ID # 停止当前正在运行的容器
docker kill 容器ID # 强制停止当前容器
常用其他命令
后台启动容器 // docker run
# docker run -d 镜像名!
[root@localhost ~]# docker run -d centos
# 问题docker ps 发现 centos 停止了
# 常见的坑 docker 容器使用后台运行 就必须要有一个前台进程 docker发现没有应用 就会自动停止
# nginx 容器启动后 发现在家没有提供服务 就会立刻停止 就是没有程序了
查看日志 // docker logs
# docker logs -tf --tail 查看条数 容器 # 没有日志
# docker logs -tf 容器 # 查看全部日志 # 没有日志
# 自己写一段shell脚本
[root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo weilekaixin;sleep 1;done"
# [root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2562525e297d centos "/bin/sh -c 'while t…" 28 seconds ago Up 26 seconds inspiring_davinci
# 显示日志
-tf #显示日志
-- tail number # 要显示的日志条数
[root@localhost ~]# docker logs -tf --tail 10 2562525e297d
2022-10-19T03:43:02.965344920Z weilekaixin
2022-10-19T03:43:03.978534255Z weilekaixin
2022-10-19T03:43:04.983054247Z weilekaixin
2022-10-19T03:43:05.986780709Z weilekaixin
2022-10-19T03:43:06.989738379Z weilekaixin
2022-10-19T03:43:07.994183720Z weilekaixin
2022-10-19T03:43:08.998905522Z weilekaixin
2022-10-19T03:43:10.001559985Z weilekaixin
2022-10-19T03:43:11.006437202Z weilekaixin
2022-10-19T03:43:12.011787221Z weilekaixin
2022-10-19T03:43:13.015084744Z weilekaixin
2022-10-19T03:43:14.017707354Z weilekaixin
2022-10-19T03:43:15.020682705Z weilekaixin
2022-10-19T03:43:16.026036103Z weilekaixin
2022-10-19T03:43:17.031302231Z weilekaixin
查看 docker 容器内部中的进程信息 // docker top
[root@localhost ~]# docker top 2562525e297d
UID PID PPID