▒ 目录 ▒
🛫 导读
需求
别的不说,先上个图,方便以后查看,真的很好用。
开发环境
版本号 | 描述 | |
---|---|---|
文章日期 | 2023-12-15 | |
操作系统 | Win10 - 22H2 | 22621.2715 |
WSL | 2 | |
1️⃣ 常见名词的解析
镜像(Image):Docker 镜像是一个静态的文件,它包含了应用程序和所有的依赖项,类似于虚拟机中的镜像文件。
容器(Container):Docker 容器是由 Docker 镜像创建的运行实例。容器是一个隔离的环境,它只包含应用程序和其所需的依赖项。
仓库(Registry):Docker 仓库是存储 Docker 镜像的地方,类似于代码仓库。Docker Hub 是最大的公共 Docker 仓库,可以免费使用。
Dockerfile:Dockerfile 是一个文本文件,它包含了构建 Docker 镜像的指令,类似于编写代码时的 Makefile。
Compose:Compose 是一个工具,它允许定义和运行多个 Docker 容器的应用程序。
Swarm:Swarm 是 Docker 的原生集群管理工具,它允许将多个 Docker 主机组成一个集群,以便更好地管理 Docker 容器。
Volume:Volume 是 Docker 中用于持久化数据的机制,它可以将容器内的数据保存到宿主机的目录中,以便容器重启后能够恢复数据。
Network:Network 是 Docker 中用于管理容器间通信的机制,它允许容器之间相互通信,或者与外部网络连接。
h3
2️⃣ 状态及帮助命令
bash
docker version #查看docker版本信息
docker info #显示docker系统信息,包括镜像和容器的数量
docker --help #帮助命令
3️⃣ 镜像命令
查看
使用docker images --help 查看images参数命令
常见参数
- -a:列出本地所有镜像
- -q:只列出镜像ID
- --digests:显示镜像的摘要信息
- --no trunc:显示完整的镜像信息
- -s:列出收藏数不小于指定值的镜像
bash
[root@localhost etc]# docker images
# 镜像的仓库源 标签 镜像ID 镜像创建时间 镜像大小
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 4 months ago 13.3kB
搜索
--filter用于各种过滤条件
bash
C:\Users\Knine>docker search tomcat --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati... 3616 [OK]
下载
docker pull 镜像名[:tag],如果不写tag,默认是latest
bash
[root@localhost ~]# docker pull mysql //等价于docker pull mysql.io/library/mysql:latest
#下载mysql指定的版本
[root@localhost ~]# docker pull mysql:5.7 //5.7版本在docker官网中必须有。
删除
docker rmi 镜像ID
bash
[root@localhost ~]# docker rmi 镜像ID 镜像ID 镜像ID
#删除所有镜像
[root@localhost ~]# docker rmi -f $(docker images -qa)
4️⃣ 容器命令
有了镜像才可以创建容器
run
该命令包含下载和启动两部分。
bash
[root@localhost ~]# docker run [可选参数] image
#参数说明
--name="Name" //Name是容器名字,如tomcat01,tomcat02
-d //后台方式运行
-it //使用交互式运行,进入容器查看内容
-p //指定容器端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
-p //随机指定端口
启动和停止
- 从容器中退回主机使用exit
- 退出容器不停止,ctrl+p+q
bash
[root@localhost ~]# docker start/restart/stop/kill 容器Id
查看
docker ps
bash
#列出当前正在运行的容器
C:\Users\Knine>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1aa797f5936b centos "/bin/bash" 28 seconds ago Up 26 seconds reverent_saha
#列出当前正在运行的容器+带出历史运行过的容器
C:\Users\Knine>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1aa797f5936b centos "/bin/bash" 32 seconds ago Up 31 seconds reverent_saha
f8d2fef7a3f3 hello-world "/hello" 21 hours ago Exited (0) 21 hours ago elated_gould
da2e218ca65b hello-world "/hello" 25 hours ago Exited (0) 25 hours ago upbeat_lederberg
# 只显示容器ID
C:\Users\Knine>docker ps -q
1aa797f5936b
#列出当前正在运行的容器+带出历史运行过的容器(只显示容器ID)
C:\Users\Knine>docker ps -q -a
1aa797f5936b
f8d2fef7a3f3
da2e218ca65b
删除
bash
# 删除指定容器,不能删除运行中的容器,可强制删除 -f
docker rm 容器ID
# 删除所有容器
docker rm -f $(docker ps -qa)
5️⃣ 其他常用命令
后台启动容器 run --detach
--detach 后台运行容器,并打印容器ID
bash
C:\Users\Knine>docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Create and run a new container from an image
Aliases:
docker container run, docker run
Options:
-d, --detach Run container in background and
print container ID
示例:
bash
[root@localhost /]# docker run -d centos
6f114cdff4d934d0a2f005baeaeb86f2285573263094ac3f392f26348c761376
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 问题后台启动centos,docker ps 发现centos 停止了
docker容器使用后台运行,必须有一个前台的进程,docker发现没有前台应用,就会自动停止
如:nginx,启动后发现自己没有提供服务,就会立即停止,就没有程序了
查看日志
docker logs -tf --tail number 容器id
bash
#自己编写一段脚本,并后台运行
[root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
85d460f6ad9657b8df88dcb1a25b4707c7b5d932bebd761af799cc619098700b
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85d460f6ad96 centos "/bin/sh -c 'while t..." 5 seconds ago Up
4 seconds exciting_beaver
-tf #显示日志
--tail number #要显示日志条数
[root@localhost /]# docker logs -tf --tail 10 85d460f6ad96
查看容器中的进程信息
bash
# 语法:docker top 容器id
[root@localhost /]# docker top 85d460f6ad96
UID PID PPID C STIME TTY TIME CMD
root 110110 110090 0 15:23 ? 00:00:00 /bin/sh -c while true;do echo kuangshen;sleep 1;done
root 128910 110110 0 15:37 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
查看元数据
docker inspect 容器ID/镜像ID 等 #返回有关 Docker 对象的低级信息
bash
C:\Users\Knine>docker ps -q
1aa797f5936b
C:\Users\Knine>docker inspect 1aa797f5936b
[
{
"Id": "1aa797f5936b97bbbb411f48e65d93cf3574ed423496c9dcecaddbebf43adedd",
"Created": "2023-12-15T12:40:13.613829523Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
进入运行的容器
- docker exec #进入容器后开启一个新的终端,可以执行里面的操作
- docker attach #进入容器正在执行的终端,不会启动新的进程
bash
# 方式一
# 命令
docker exec -it 容器id bashshell
# 测试
docker exec -it 85d460f6ad96 /bin/bash
# 方式二
docker attach 容器id
文件拷贝
双向的,既可以从容器拷贝到主机,也可以从主机拷贝到容器。
bash
C:\Users\Knine>docker cp --help
Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
Copy files/folders between a container and the local filesystem
Use '-' as the source to read a tar archive from stdin
and extract it to a directory destination in a container.
Use '-' as the destination to stream a tar archive of a
container source to stdout.
Aliases:
docker container cp, docker cp
Options:
-a, --archive Archive mode (copy all uid/gid information)
-L, --follow-link Always follow symbol link in SRC_PATH
-q, --quiet Suppress progress output during copy. Progress
output is automatically suppressed if no terminal
is attached
📖 参考资料
- 【WSL】Windows下的Linux子系统使用方法指南 https://blog.csdn.net/kinghzking/article/details/134984077
- 【Docker】WSL 2 上的 Docker 搭建和入门 https://blog.csdn.net/kinghzking/article/details/134994407
- 【狂神说Java】Docker最新超详细版教程笔记 https://blog.csdn.net/weixin_46860149/article/details/118932378
- 官网文档: https://docs.docker.com/reference/