Docker:Docker从入门到精通(三)- Docker镜像与容器相关命令

一、Docker镜像与Docker容器介绍

  Docker 镜像是一个只读的模板,它包含了运行某个应用程序所需的所有文件、依赖库、环境变量和配置。你可以将镜像看作是一个应用程序的“打包版本”,它可以在任何支持 Docker 的环境中运行。

  Docker 容器是 Docker 镜像的运行实例。你可以将容器看作是一个轻量级的、独立的、可执行的软件包,它包含了运行某个应用程序所需的所有内容。容器与宿主机共享操作系统内核,但具有独立的文件系统、网络和进程空间。

它两之间的关系

  1. 镜像是静态的,类似于“类”或“模板”;容器是动态的,类似于“对象”或“实例”。

  2. 你可以从一个镜像创建多个容器,每个容器都是独立的运行实例。

  3. 镜像是容器的基础,容器是镜像的运行表现。

二、镜像相关命令

1. 查看镜像

docker images

在这里插入图片描述

REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期
SIZE:镜像大小
这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

2. 拉取镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

NAME:镜像名称(例如 nginx、redis)。

TAG:镜像标签(例如 latest、1.23.1)。如果未指定标签,默认使用 latest。

DIGEST:镜像的唯一标识符(哈希值),用于精确指定某个版本的镜像。

常用选项(OPTIONS--all-tags 或 -a:下载镜像的所有标签(版本)
--quiet 或 -q:静默模式,仅显示镜像 ID
docker pull nginx

默认下载 nginx:latest 镜像

3. 搜索镜像

docker search 镜像名称
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

4. 删除镜像

docker rmi 镜像ID

三、容器相关命令

1. 查看当前正在运行的容器

docker ps

在这里插入图片描述

2. 查看所有容器(包括已停止的)

docker ps -a

在这里插入图片描述

3. 停止容器

docker stop 容器名称(或者容器ID

4. 启动容器

docker start 容器名称(或者容器ID

5. 重启单个容器

docker restart (容器名称或容器ID

6. 重启多个容器

docker restart <容器1名称或ID> <容器2名称或ID> <容器3名称或ID>

7. 重启所有正在运行的容器

docker restart $(docker ps -q)

8.容器的创建与启动

docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
OPTIONS:这是可选的,用于指定容器的配置。

IMAGE[:TAG]:这是你想要运行的 Docker 镜像的名称和标签(如果不指定标签,则默认为 latest)。

COMMAND:这是容器启动时默认执行的命令。如果未指定,则使用镜像的默认命令。

ARG...:传递给 COMMAND 的参数

常用选项(OPTIONS):

-d 或 --detach:在后台运行容器。

-i 或 --interactive:保持容器的标准输入开放。通常与 -t 一起使用。

-t 或 --tty:分配一个伪终端。通常与 -i 一起使用。容器启动后会进入其命令行。

-p 或 --publish:发布容器的一个或多个端口到主机,格式为 <hostPort>:<containerPort>。前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射


-v 或 --volume:挂载卷到容器中,格式为 <hostPath>:<containerPath>(前者是宿主机目录,后者是映射到宿主机上的目录)。可以使用多个-v做多个目录或文
件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-e 或 --env:设置环境变量。

--rm:容器退出时自动清理容器文件系统。

--network:指定容器的网络模式,例如 bridge, host, none 等。

--restart:设置容器的重启策略,例如 no, on-failure, always 等。

--name:为容器指定一个名称。

例如创建并运行redis容器

docker run -d --name myredis -p 6379:6379 redis --requirepass 123456
--name myredis 设置容器名称

-p 6379:6379 指定端口映射关系

redis 镜像名称

--requirepass 123456 设置密码,然后被传递给 Redis 服务器,作为其启动参数之一

9. 进入容器内部

进入容器内部 并在其中启动一个 Bash shell

docker exec -it 容器名称 (或者容器ID) /bin/bash

如果容器中没有 Bash shell,你也可以使用 sh

docker exec -it 容器名称 (或者容器ID) /bin/sh

10. 目录挂载

docker run -v <宿主机目录>:<容器目录> [其他选项] IMAGE[:TAG] [COMMAND]
<宿主机目录>:宿主机上的目录路径。

<容器目录>:容器内的目录路径,宿主机目录的内容将映射到该目录。

IMAGE[:TAG]:使用的 Docker 镜像名称和标签。

[COMMAND]:容器启动时执行的命令(可选)
docker run -v /home/user/data:/app/data mydata

挂载目录,涉及到权限问题。

将宿主机目录挂载为只读模式

docker run -v /home/user/data:/app/data:ro mydata

例如几个常用的挂职目录的场景

1. 挂载 Nginx 的配置文件

将宿主机的 /home/user/nginx.conf 挂载到容器的 /etc/nginx/nginx.conf,并启动 Nginx 容器

docker run -d --name mynginx -v /home/user/nginx.conf:/etc/nginx/nginx.conf -p 80:80 nginx

-d:在后台运行容器。

--name mynginx:为容器指定名称。

-v /home/user/nginx.conf:/etc/nginx/nginx.conf:挂载配置文件。

-p 80:80:将宿主机的 80 端口映射到容器的 80 端口。

2. 挂载数据卷

将宿主机的 /home/user/app/data 目录挂载到容器的 /var/data/html,并启动一个 Web 应用容器

docker run -d --name myapp -v /home/user/app/data:/var/data/html -p 8080:80 mywebapp

-v /home/user/app/data:/var/data/html:挂载数据目录。

-p 8080:80:将宿主机的 8080 端口映射到容器的 80 端口。

四、应用部署

1.Redis部署

拉取镜像

docker pull redis

在这里插入图片描述

启动

docker run -d --name myredis -p 6379:6379 redis --requirepass 123456

在这里插入图片描述

进入容器内部,连接redis

docker exec -it myredis bash
redis-cli -h 127.0.0.1 -p 6379 -a 123456

在这里插入图片描述

2. Nginx部署

拉取镜像

docker pull nginx

运行容器

docker run -d --name mynginx -p 80:80 nginx

浏览器访问
在这里插入图片描述

五、迁移与备份

将容器保存为镜像

docker commit 容器名称或容器ID 新镜像名称:标签
docker commit mynginx mynginx_i

镜像备份

docker save -o 导出文件名.tar 镜像名称:标签

docker save -o mynginx.tar mynginx_i

镜像恢复

docker load -i <导出文件名>.tar

docker load -i mynginx.tar

以上是docker镜像、docker容器的相关操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的狍子007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值