▒ 目录 ▒

    • 导读
      • 需求
      • 开发环境
    • 1️⃣ 常见名词的解析
      • h3
    • 2️⃣ 状态及帮助命令
    • 3️⃣ 镜像命令
      • 查看
      • 搜索
      • 下载
      • 删除
    • 4️⃣ 容器命令
      • run
      • 启动和停止
      • 查看
      • 删除
    • 5️⃣ 其他常用命令
      • 后台启动容器 run –detach
      • 查看日志
      • 查看容器中的进程信息
      • 查看元数据
      • 进入运行的容器
      • 文件拷贝
    • 参考资料

导读

需求

别的不说,先上个图,方便以后查看,真的很好用。

开发环境

版本号描述
文章日期2023-12-15
操作系统Win10 – 22H222621.2715
WSL2

1️⃣ 常见名词的解析

  1. 镜像(Image):Docker 镜像是一个静态的文件,它包含了应用程序和所有的依赖项,类似于虚拟机中的镜像文件。

  2. 容器(Container):Docker 容器是由 Docker 镜像创建的运行实例。容器是一个隔离的环境,它只包含应用程序和其所需的依赖项。

  3. 仓库(Registry):Docker 仓库是存储 Docker 镜像的地方,类似于代码仓库。Docker Hub 是最大的公共 Docker 仓库,可以免费使用。

  4. Dockerfile:Dockerfile 是一个文本文件,它包含了构建 Docker 镜像的指令,类似于编写代码时的 Makefile。

  5. Compose:Compose 是一个工具,它允许定义和运行多个 Docker 容器的应用程序。

  6. Swarm:Swarm 是 Docker 的原生集群管理工具,它允许将多个 Docker 主机组成一个集群,以便更好地管理 Docker 容器。

  7. Volume:Volume 是 Docker 中用于持久化数据的机制,它可以将容器内的数据保存到宿主机的目录中,以便容器重启后能够恢复数据。

  8. 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/