▒ 目录 ▒
- 导读
- 需求
- 开发环境
- 1️⃣ 常见名词的解析
- h3
- 2️⃣ 状态及帮助命令
- 3️⃣ 镜像命令
- 查看
- 搜索
- 下载
- 删除
- 4️⃣ 容器命令
- run
- 启动和停止
- 查看
- 删除
- 5️⃣ 其他常用命令
- 后台启动容器 run –detach
- 查看日志
- 查看容器中的进程信息
- 查看元数据
- 进入运行的容器
- 文件拷贝
- 参考资料
导读
需求
别的不说,先上个图,方便以后查看,真的很好用。
开发环境
版本号 | 描述 | |
---|---|---|
文章日期 | 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️⃣ 状态及帮助命令
docker version#查看docker版本信息docker info#显示docker系统信息,包括镜像和容器的数量docker --help#帮助命令
3️⃣ 镜像命令
查看
使用docker images –help 查看images参数命令
常见参数
- -a:列出本地所有镜像
- -q:只列出镜像ID
- –digests:显示镜像的摘要信息
- –no trunc:显示完整的镜像信息
- -s:列出收藏数不小于指定值的镜像
[root@localhost etc]# docker images# 镜像的仓库源 标签镜像ID镜像创建时间镜像大小REPOSITORYTAG IMAGE ID CREATEDSIZEhello-world latestd1165f221234 4 months ago 13.3kB
搜索
–filter用于各种过滤条件
C:\Users\Knine>docker search tomcat --filter=STARS=3000NAMEDESCRIPTIONSTARS OFFICIAL AUTOMATEDtomcatApache Tomcat is an open source implementati… 3616[OK]
下载
docker pull 镜像名[:tag],如果不写tag,默认是latest
[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
[root@localhost ~]# docker rmi 镜像ID 镜像ID 镜像ID#删除所有镜像[root@localhost ~]# docker rmi -f $(docker images -qa)
4️⃣ 容器命令
有了镜像才可以创建容器
run
该命令包含下载和启动两部分。
[root@localhost ~]# docker run [可选参数] image#参数说明--name="Name"//Name是容器名字,如tomcat01,tomcat02-d //后台方式运行-it //使用交互式运行,进入容器查看内容-p//指定容器端口-p 8080:8080-pip:主机端口:容器端口-p主机端口:容器端口-p容器端口-p//随机指定端口
启动和停止
- 从容器中退回主机使用exit
- 退出容器不停止,ctrl+p+q
[root@localhost ~]# docker start/restart/stop/kill 容器Id
查看
docker ps
#列出当前正在运行的容器C:\Users\Knine>docker psCONTAINER ID IMAGE COMMAND CREATEDSTATUSPORTS NAMES1aa797f5936b centos"/bin/bash" 28 seconds ago Up 26 seconds reverent_saha#列出当前正在运行的容器+带出历史运行过的容器C:\Users\Knine>docker ps -aCONTAINER ID IMAGE COMMAND CREATEDSTATUSPORTS NAMES1aa797f5936b centos"/bin/bash" 32 seconds ago Up 31 seconds reverent_sahaf8d2fef7a3f3 hello-world "/hello"21 hours ago Exited (0) 21 hours ago elated_gouldda2e218ca65b hello-world "/hello"25 hours ago Exited (0) 25 hours ago upbeat_lederberg# 只显示容器IDC:\Users\Knine>docker ps -q1aa797f5936b#列出当前正在运行的容器+带出历史运行过的容器(只显示容器ID)C:\Users\Knine>docker ps -q -a1aa797f5936bf8d2fef7a3f3da2e218ca65b
删除
# 删除指定容器,不能删除运行中的容器,可强制删除 -fdocker rm 容器ID# 删除所有容器docker rm -f $(docker ps -qa)
5️⃣ 其他常用命令
后台启动容器 run –detach
–detach 后台运行容器,并打印容器ID
C:\Users\Knine>docker run --helpUsage:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]Create and run a new container from an imageAliases:docker container run, docker runOptions:-d, --detach Run container in background and print container ID
示例:
[root@localhost /]# docker run -d centos6f114cdff4d934d0a2f005baeaeb86f2285573263094ac3f392f26348c761376[root@localhost /]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUSPORTS NAMES# 问题后台启动centos,docker ps 发现centos 停止了
docker容器使用后台运行,必须有一个前台的进程,docker发现没有前台应用,就会自动停止
如:nginx,启动后发现自己没有提供服务,就会立即停止,就没有程序了
查看日志
docker logs -tf –tail number 容器id
#自己编写一段脚本,并后台运行[root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"85d460f6ad9657b8df88dcb1a25b4707c7b5d932bebd761af799cc619098700b[root@localhost /]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES85d460f6ad96 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
查看容器中的进程信息
# 语法:docker top 容器id[root@localhost /]# docker top 85d460f6ad96UIDPIDPPID C STIMETTY TIMECMDroot110110110090015:23 " />-c while true;do echo kuangshen;sleep 1;doneroot 128910 1101100 15:37 ? 00:00:00/usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
查看元数据
docker inspect 容器ID/镜像ID 等 #返回有关 Docker 对象的低级信息
C:\Users\Knine>docker ps -q1aa797f5936bC:\Users\Knine>dockerinspect 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 #进入容器正在执行的终端,不会启动新的进程
# 方式一 # 命令docker exec -it 容器id bashshell# 测试docker exec -it 85d460f6ad96/bin/bash# 方式二docker attach 容器id
文件拷贝
双向的,既可以从容器拷贝到主机,也可以从主机拷贝到容器。
C:\Users\Knine>docker cp --helpUsage:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATHCopy files/folders between a container and the local filesystemUse '-' as the source to read a tar archive from stdinand extract it to a directory destination in a container.Use '-' as the destination to stream a tar archive of acontainer source to stdout.Aliases:docker container cp, docker cpOptions:-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. Progressoutput is automatically suppressed if no terminalis 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/