46、Docker 容器安装、配置与使用指南

Docker 容器安装、配置与使用指南

1. 使用私有仓库

要使用私有仓库,首先需要登录到 Docker,之后就可以随意推送和拉取容器镜像。登录命令如下:

docker login

下面以从微软仓库拉取标准 Nano Server 镜像为例,命令如下:

docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022

若要将容器镜像推送到自己的仓库,可使用以下命令(通常在对镜像进行修改后操作):

docker push <dockerid>/<reponame>:ltsc2022

此命令中,需填入 Docker ID、仓库名称以及为容器镜像设置的标签(这里标签值为 ltsc2022)。

镜像推送成功后,会显示在 Docker Hub 的仓库中。推送到 Docker Hub 的所有标签都会显示在门户中,不过无法在 Docker Hub 内修改容器镜像,只能删除。若要修改,需先拉取镜像,进行修改后再推送。拉取镜像进行修改的命令如下:

docker pull <mydockerid>/server2022:ltsc2022

修改完成(如更新容器镜像)后,可将其推回私有仓库,以便从任何可登录 Docker 仓库的系统访问。

2. 在 Windows Server 2022 上安装容器

容器技术为开发团队提供了动态工作环境,开发者能在数分钟内启动支持应用需求的容器,许多容器镜像还针对不同编程框架进行了定制。Windows Server 2022 支持两种容器类型:
| 容器类型 | 特点 | 缺点 |
| — | — | — |
| Windows 容器 | 传统容器模型,快速、轻量、易用 | 与主机操作系统共享内核 |
| Hyper - V 容器 | 适用于需要不同内核版本或高安全性、不能共享内核的工作负载,可实现真正隔离 | 对主机服务器性能影响较大 |

2.1 安装 Windows 容器

安装步骤如下:
1. 从服务器管理器中选择“管理” -> “添加角色和功能”。
2. 在“开始之前”屏幕,点击“下一步”。
3. 在“选择安装类型”屏幕,点击“下一步”。
4. 在“选择目标服务器”屏幕,点击“下一步”。
5. 在“选择服务器角色”屏幕,点击“下一步”。
6. 在“选择功能”屏幕,选择“容器”,然后点击“下一步”。
7. 在“确认安装选择”屏幕,点击“安装”。
8. 点击“关闭”并重启服务器。

2.2 安装 Hyper - V 容器

安装 Hyper - V 容器需同时安装 Hyper - V 角色,步骤如下:
1. 从服务器管理器中选择“管理” -> “添加角色和功能”。
2. 在“开始之前”屏幕,点击“下一步”。
3. 在“选择安装类型”屏幕,点击“下一步”。
4. 在“选择目标服务器”屏幕,点击“下一步”。
5. 在“选择服务器角色”屏幕,选择“Hyper - V”,点击“添加功能”,然后点击“下一步”。
6. 在“选择功能”屏幕,选择“容器”,然后点击“下一步”。
7. 在“Hyper - V”屏幕,点击“下一步”。
8. 在“创建虚拟交换机”屏幕,选择网络适配器,然后点击“下一步”。
9. 在“虚拟机迁移”屏幕,点击“下一步”。
10. 在“默认存储”屏幕,点击“下一步”。
11. 在“确认安装选择”屏幕,点击“安装”。
12. 安装完成后,点击“关闭”并重启服务器。

2.3 安装 Docker

安装完容器功能(可能还包括 Hyper - V 角色)后,需要安装 Docker 引擎,步骤如下:
1. 右键点击“开始”菜单,选择“Windows PowerShell(管理员)”打开 PowerShell。
2. 安装 Microsoft 包提供程序:

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
  1. 安装最新版本的 Docker:
Install-Package -Name docker -ProviderName DockerMsftProvider
  1. 安装完成后,重启服务器,可通过图形用户界面操作,也可在 PowerShell 中输入以下命令:
Restart-Computer -Force

2.4 测试容器安装

2.4.1 测试 Windows 容器

可通过下载并运行容器镜像来测试 Windows 容器安装是否正确,以“Hello world”示例镜像为例:

docker run hello-world

若只想下载镜像以便后续使用,可使用以下命令:

docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022

需注意,容器镜像的内核版本必须与容器主机的内核版本匹配,否则会报错。

2.4.2 测试 Hyper - V 容器

测试 Hyper - V 容器与 Windows 容器类似,但需添加 --isolation=hyperv 参数,命令如下:

docker run --isolation=hyperv mcr.microsoft.com/windows/nanoserver:1909

由于 Hyper - V 容器不共享内核,即使使用较旧内核版本的镜像也能运行。

3. 在 Windows Server 2022 上配置 Docker 和容器

安装容器相对简单,在企业环境中,还需对容器进行配置以实现实际业务价值。

3.1 使用 Dockerfile

Dockerfile 用于指定容器的构建方式,它确定使用的容器镜像并包含要运行的命令,对容器镜像所做的更改将作为一层保存到原始镜像之上。
创建 Dockerfile 时,在 Windows 上需确保无文件扩展名,可在保存时将文件名为 “dockerfile” 并将保存类型改为“所有文件”。Dockerfile 中的常用指令如下:
| 指令名称 | 描述 |
| — | — |
| FROM | 指定构建镜像所基于的容器镜像 |
| LABEL | 用于在 Docker 中组织对象,以键值对形式存储 |
| RUN | 在操作系统内运行命令,如 PowerShell、命令提示符等 |
| CMD | 设置容器创建和部署时默认运行的命令 |
| COPY | 将文件或文件夹从指定源复制到指定目标 |
| ADD | 与 COPY 类似,但可从远程主机复制文件 |
| WORKDIR | 设置工作目录,可能用于 RUN 和 CMD 指令 |

以下是一个简单的 Dockerfile 示例,用于拉取 Windows Server Core 镜像并安装 Internet Information Services (IIS),同时创建一个“Hello World”页面:

# Sets the base container image to Windows Server 2022 Core
FROM mcr.microsoft.com/windows/servercore:ltsc2022
# Metadata indicating an image maintainer.
LABEL "version" = "1.0" "Description" = "Core with IIS"
# Use dism.exe to install IIS
RUN dism.exe /online /enable-feature /all / featurename:iis-webserver /NoRestart
# Creates the Hello World file and adds our message to it.
RUN echo "Hello World – I was created from a Dockerfile!" >  c:\inetpub\wwwroot\index.html

创建好 Dockerfile 后,在 PowerShell 中导航到保存 Dockerfile 的目录,使用以下命令创建容器镜像:

docker build -t coreiis .

其中,“.” 表示 Dockerfile 在当前目录,也可使用完整路径。

3.2 为容器和其他对象应用自定义元数据

在容器领域,元数据通常指“标签”,可用于组织 Docker 中的各种对象,如镜像、容器、网络和卷等。标签是键值对,键用于分组对象,值为具体信息。

3.2.1 创建标签
  • 单个标签示例:
LABEL "Project" = "NewApp"
  • 多个标签示例:
LABEL "Project" = "NewApp" "Author" = "John Doe" "version" = "1.0"

为提高可读性,可使用斜杠分隔:

LABEL "Project" = "NewApp" \
"Author" = "John Doe" \
"version" = "1.0"
3.2.2 查看标签

若要查看容器镜像的标签,可使用以下命令:

docker inspect <containername>

3.3 配置容器

3.3.1 自动启动容器

对于运行重要服务的容器,可使用重启策略确保容器在退出后自动重启。使用重启策略前,需手动启动容器并确保其运行至少 10 秒,之后 Docker 才能进行监控。可使用 --restart 标志指定重启策略,命令如下:

docker run -dit --restart <policy> coreiis

通过以上步骤,你可以在 Windows Server 2022 上完成容器的安装、配置和使用,充分发挥容器技术的优势。

3.4 配置 Docker 守护进程

可以使用 daemon.json 文件来配置 Docker 守护进程。 daemon.json 文件通常位于 /etc/docker 目录下,如果该文件不存在,可以手动创建。以下是一个简单的 daemon.json 文件示例:

{
    "registry-mirrors": ["https://your-registry-mirror-url"],
    "insecure-registries": ["your-insecure-registry-url"]
}
  • registry-mirrors :用于配置 Docker 镜像加速地址,可提高镜像拉取速度。
  • insecure-registries :用于配置不安全的 Docker 镜像仓库地址,当使用自签名证书的仓库时需要配置。

配置完成后,需要重启 Docker 服务使配置生效,可在 PowerShell 中使用以下命令:

Restart-Service docker

3.5 容器配置流程图

graph LR
    A[开始] --> B[使用 Dockerfile 构建镜像]
    B --> C[应用自定义元数据(标签)]
    C --> D[配置容器(如自动启动)]
    D --> E[配置 Docker 守护进程(daemon.json)]
    E --> F[重启 Docker 服务]
    F --> G[完成配置]

4. 总结与注意事项

4.1 容器类型选择

  • Windows 容器 :适合对性能要求较高、对内核版本一致性要求较高的场景,因为它与主机共享内核,启动速度快、资源占用少。
  • Hyper - V 容器 :适合对安全性要求较高、需要不同内核版本的场景,虽然性能有一定损耗,但能提供更好的隔离性。

4.2 镜像使用注意事项

  • 确保容器镜像的内核版本与容器主机的内核版本匹配,否则会导致容器无法正常运行。
  • 在使用私有仓库时,要注意登录信息的安全,避免泄露。

4.3 配置相关注意事项

  • 创建 Dockerfile 时,要注意文件的编码格式和换行符,避免出现指令执行错误。
  • 在配置 Docker 守护进程时,要确保 daemon.json 文件的语法正确,否则会导致 Docker 服务无法启动。

4.4 容器配置要点总结表

配置项目 要点说明
Dockerfile 指定基础镜像、运行命令、添加元数据等,构建自定义容器镜像
自定义元数据(标签) 用于组织和管理 Docker 中的各种对象,方便查找和筛选
容器自动启动 使用重启策略确保重要容器在退出后自动重启
Docker 守护进程配置 使用 daemon.json 文件配置镜像加速、不安全仓库等

通过以上对 Docker 容器在 Windows Server 2022 上的安装、配置和使用的详细介绍,你可以根据实际需求灵活运用这些技术,提高开发和运维效率,为企业的业务发展提供有力支持。同时,在实际操作过程中,要严格遵循相关的注意事项,确保系统的稳定性和安全性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值