云计算百科
云计算领域专业知识百科平台

Docker常用命令

Docker常用命令

  • Docker 服务核心命令
  • 镜像核心命令
  • 容器核心命令

Docker 服务核心命令

查看 Docker 版本

docker version

在这里插入图片描述

查看 Docker 系统详情

docker info

在这里插入图片描述

重新加载 Docker 配置

systemctl daemon-reload

开启 Docker 服务

systemctl start docker

镜像核心命令

搜索 Docker Hub 上的镜像(比如nginx)

docker search nginx

拉取镜像

docker pull nginx

在这里插入图片描述

查看本地所有可用的镜像

docker images

在这里插入图片描述

REPOSITORY:镜像仓库名 TAG:镜像标签(版本) IMAGE ID:镜像 ID(完整 ID 前 12 位,唯一标识镜像) CREATED:镜像创建时间 SIZE:镜像大小

显示本地所有镜像

docker images -a

在这里插入图片描述

只显示镜像的id

docker images -q

在这里插入图片描述

显示镜像的摘要信息

docker images –digests

在这里插入图片描述

输出新增 DIGEST 列(镜像摘要),摘要是镜像的唯一哈希值,摘要用于精准标识镜像版本,避免 TAG 混淆。

显示完整镜像 ID 信息

docker images –no-trunc

在这里插入图片描述

删除指定镜像(需先确保镜像未被容器占用,否则需要加 -f 强制删除)

docker rmi nginx:latest # 按镜像名:标签删除
docker rmi 605c77e624dd # 按镜像ID删除

在这里插入图片描述

容器核心命令

容器是镜像的运行实例,业务服务运行在容器中,这是 Docker 最常用的操作场景。

创建并启动容器

docker run -it –name my-nginx -p 80:80 nginx:latest

核心参数: -d:后台运行(守护进程,不占终端); -it:交互式终端(i 保持容器一直运行,t 用于给容器一个伪终端); -p:端口映射(宿主机:容器); -v:数据卷挂载(持久化数据,宿主机路径:容器路径); –name:自定义容器名称(避免随机名,方便管理)。

通过 -it 启动的容器是交互式容器:容器创建后会直接进入交互式终端,输入 exit 退出终端时,容器的主进程会终止,容器随之停止运行。 通过 -d 创建的容器是守护式容器:用 -d 启动容器时,容器会在后台运行,不会直接进入终端,若进入后台容器的终端后输入 exit 退出时,只是关闭了容器的终端会话,容器的主进程仍在运行,容器不会停止。

在这里插入图片描述

执行该命令时,Docker 会优先从本地镜像仓库中查找 nginx:latest 镜像;如果本地未找到该镜像,会从 Docker 守护进程配置的镜像源(默认是 Docker Hub,若配置了阿里云等镜像加速源则优先从加速源)拉取;若所有配置的镜像源都未找到该镜像,则会抛出 “找不到镜像” 的错误,若成功获取镜像,Docker 会立即基于该镜像创建并启动容器。

查看正在运行的容器

docker ps

在这里插入图片描述

查看所有容器

docker ps -a

显示容器 ID

docker ps -q

交互式进入运行中的容器

docker exec -it [CONTAINER ID] bash

如果容器没有bash,用 sh 进入运行中的容器

docker exec -it [CONTAINER ID] sh

在这里插入图片描述

Docker 容器内部看似轻量级 Linux 操作系统,本质是容器会共享宿主机的 Linux 内核,同时镜像中自带了精简的 Linux 用户空间(包含标准目录结构、基础命令、系统依赖库等运行环境),并且封装了应用运行所需的全部依赖,这使得容器在使用时呈现出完整、独立且轻量化的 Linux 系统体验。

启动已停止的容器

docker start my-nginx

获取指定 Docker 资源的完整且详细的元数据信息

docker inspect my-nginx

在这里插入图片描述

“IPAddress”: “172.17.0.2” 即 Docker 容器的 IP 地址 172.17.0.2 curl 是命令行工具,用于向指定地址发送 HTTP/HTTPS 请求,容器内部与运行 Docker 的宿主机能直接访问这个 IP,但宿主机之外的其他机器无法直接访问。例如访问容器内80端口的Nginx服务:

curl 172.17.0.2:80

在这里插入图片描述

在服务器防火墙中放行 80 端口且云服务器安全组开放 80 端口后,访问 服务器公网ip地址:80,即可访问到容器80端口所对应的内容

在这里插入图片描述

停止运行中的容器

docker stop my-nginx

重启容器

docker restart my-nginx

删除已停止的容器

docker rm my-nginx

强制删除运行中的容器(不推荐,先stop再rm)

docker rm -f my-nginx

Docker 数据卷

Docker 容器的文件系统默认与容器生命周期绑定,容器销毁时,其内部存储的所有数据会被彻底清除,无法保留。 挂载(包括数据卷挂载 Volume、绑定挂载 Bind Mount)是 Docker 实现数据持久化的核心方式,本质是将宿主机的文件 / 目录与容器内指定路径建立双向实时同步映射: 数据同步性:宿主机对挂载路径的文件修改会即时同步到容器内,容器内产生的日志、数据变更也会同步回宿主机; 数据持久性:容器删除 / 重建后,宿主机挂载路径下的网页、配置、日志等数据不会丢失,实现数据与容器解耦; 管理便捷性:无需进入容器内部,直接在宿主机即可完成 Nginx 网页编辑、配置修改、日志查看等操作,提升运维效率。

创建挂载目录:

mkdir -p /usr/local/src/docker/data/nginx/{conf.d,html,logs}
touch /usr/local/src/docker/data/nginx/conf/nginx.conf

-p 表示递归创建目录,{conf.d,html,logs} 是 Shell 批量创建语法,等价于手动创建三个子目录,简化命令输入 Docker 挂载要求宿主机文件 / 目录类型与容器内一致,容器内 /etc/nginx/nginx.conf 是文件,所以需要在 conf 目录下创建空的 nginx.conf 文件

启动容器

docker run –name nginx81 -d -p 81:80 \\
-v /usr/local/src/docker/data/nginx/html:/usr/share/nginx/html \\
-v /usr/local/src/docker/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \\
-v /usr/local/src/docker/data/nginx/conf.d:/etc/nginx/conf.d \\
-v /usr/local/src/docker/data/nginx/logs:/var/log/nginx nginx

-v 宿主机路径:容器内路径:绑定挂载,建立宿主机与容器的双向同步映射

在这里插入图片描述

根据当前容器制作自定义镜像

docker commit 是将容器(包含所有修改)打包为新镜像的核心命令,本质是提交容器的当前状态副本,使之成为可复用的新镜像。 需要注意的是生产环境慎用 docker commit,无法追溯镜像内具体改了什么,且会包含容器临时文件,镜像体积膨胀,生产环境优先使用 Dockerfile 制作镜像。

命令:docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

基于 Tomcat 容器的完整实操流程:

拉取官方 Tomcat 基础镜像,获取启动容器的基础环境

docker pull tomcat

启动 Tomcat 容器

docker run -p 8081:8080 -d tomcat

进入容器交互终端

docker exec -it 3a06b4c779a8 bash

在容器内创建自定义测试页面:依次执行

cd webapps #进入Tomcat 默认网页根目录
mkdir testPage #创建自定义页面目录
cd testPage #进入该目录
touch index.html #创建空白网页文件
echo "test" >>index.html #向文件写入测试内容

制作自定义镜像:退出容器后执行

docker commit -m="新增Tomcat自定义testPage测试页面" -a="作者信息" 3a06b4c779a8 my-tomcat:v1

将修改后的容器打包为名为 my-tomcat、标签为 v1 的新镜像

启动新容器

docker run -p 8088:8080 -d my-tomcat:v1

开启 8088 端口的防火墙后,访问 宿主机IP:8088/testPage/index.html 即可看到 “test” 内容,说明原容器的修改已固化到新镜像中。

在这里插入图片描述

赞(0)
未经允许不得转载:网硕互联帮助中心 » Docker常用命令
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!