侧边栏壁纸
博主头像
高压锅里的小白 博主等级

行动起来,活在当下

  • 累计撰写 62 篇文章
  • 累计创建 28 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker安装教程

高压锅里的小白
2021-08-18 / 0 评论 / 0 点赞 / 251 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Linux环境

本教程安装docker版本为 20.10.8

在线安装

1. 配置docker镜像源

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
yum  makecache

2. 安装docker依赖包

yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2

3. 安装docker-ce

yum install docker-ce

离线安装

在很多环境下,服务器是不允许连接外网的,这种情况下,我们无法直接使用上述的在线安装方式,此时就用到了下面的离线安装方式。

1. 下载离线安装包

下载地址1

下载地址2

下载地址3

下载页面仅保留最新版本rpm包,故搜索时请根据名称搜索,不要加版本号

先在本地通过该地址下载对应版本的rpm包,本教程需下载以下14个包:

  1. docker-ce-20.10.8-3.el7.x86_64.rpm 下载地址1
  2. docker-ce-cli-20.10.8-3.el7.x86_64.rpm 下载地址1
  3. containerd.io-1.4.9-3.1.el7.x86_64.rpm 下载地址1
  4. container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm 下载地址2

以下均为下载地址3

  1. libselinux-2.5-15.el7.x86_64.rpm
  2. libselinux-python-2.5-15.el7.x86_64.rpm
  3. libselinux-utils-2.5-15.el7.x86_64.rpm
  4. libsemanage-2.5-14.el7.x86_64.rpm
  5. libsemanage-python-2.5-14.el7.x86_64.rpm
  6. libsepol-2.5-10.el7.x86_64.rpm
  7. policycoreutils-2.5-34.el7.x86_64.rpm
  8. policycoreutils-python-2.5-34.el7.x86_64.rpm
  9. selinux-policy-3.13.1-268.el7.noarch.rpm
  10. selinux-policy-targeted-3.13.1-268.el7.noarch.rpm
  11. setools-libs-3.3.8-4.el7.x86_64.rpm

下载页截图

下载截图

找到对应文件,点击下载

2. 安装rpm包

下载完成并将安装包上传至服务器后,进入rpm包所在目录,使用 rpm命令进行安装

rpm -ivh *.rpm --nodeps --force

操作截图

下载截图

此时,docker就安装完成了,但想实际使用还需进一步设置。

安装完成后设置

1. 启动docker并设置开机自启

设置开机启动docker ce

systemctl enable docker

启动docker ce

systemctl start docker

查看docker状态

systemctl status docker

查看docker

docker version

操作截图

下载截图

下载截图

2. 建立docker用户组

建立docker组

groupadd docker

将当前用户加入docker组

usermod -aG docker $USER

操作截图

下载截图

设置国内镜像源

使用 Docker 需要经常从官方获取镜像,国内拉取镜像的过程非常耗时,所以要更换到国内镜像源

创建或修改 /etc/docker/daemon.json

设置网易镜像源,也可选择其它

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

重启Docker服务

systemctl restart docker

若不想设置全局的镜像源,也可在拉取镜像时指定镜像源。

docker pull registry.docker-cn.com/library/ubuntu:16.04

docker-compose安装及说明

详情见: docker-compose安装及说明

参考

https://segmentfault.com/a/1190000018157675

Windows环境

Windows版本:Win11

前置条件

需提前安装好WSL,安装教程

开始安装

下载安装包

下载地址,打开页面后,点击图示位置下载

docker_download_link.png

安装

安装包下载完成后打开安装

出现提示时,请确保选择或不选择配置页面上的 使用 WSL 2 而不是 Hyper-V选项,具体取决于您选择的后端。建议勾选。

use_wsl2_instead_hyperv.png

设置国内镜像源

在设置->Docker Engine中添加如下配置,可自行替换其他源,然后点击Apply

"registry-mirrors": ["http://hub-mirror.c.163.com"]

docker_set_internal_sources.png

常用命令

save与load命令

首先是save命令,在存在镜像的机器上将镜像导出为tar格式文件

docker save -o <save_path> 镜像ID

如docker save -o xxx.tar b3de72970178

然后将导出的tar格式文件上传至需要的服务器,在需要的服务器上执行load命令

docker load -i xxx.tar

然后使用tag命令将重命名镜像tag

docker tag b3de72970178 gitea/gitea:1.22.1

这样就可以在无法下载镜像的服务器上使用这个镜像了。

开放Docker的API访问

配置证书

生成 TLS 证书

  1. 创建工作目录并进入

    mkdir -p ~/docker-certs && cd ~/docker-certs
    
  2. 生成 CA 根证书(证书颁发机构)

    这是用于签署服务器和客户端证书的根证书:

    # 生成 CA 私钥(无密码版,生产环境建议加 -des3 设密码)
    openssl genrsa -out ca-key.pem 4096
    
# 生成 CA 证书(有效期 3650 天=10年)
openssl req -new -x509 -days 3650 -key ca-key.pem -out ca.pem -subj "/C=CN/ST=YourState/L=YourCity/O=YourOrg/CN=Docker-CA"

替换 YourState(省份)、YourCity(城市)、YourOrg(组织名)为实际信息

  1. 生成服务器证书

用于远程 Docker 主机的证书:

# 生成服务器私钥
openssl genrsa -out server-key.pem 4096
# 生成服务器证书请求(CSR)
openssl req -subj "/C=CN/ST=YourState/L=YourCity/O=YourOrg/CN=远程主机IP或域名" -sha256 -new -key server-key.pem -out server.csr

关键CN=远程主机IP 必须填写远程 Docker 主机的实际 IP(或域名,若用域名访问)

  1. 配置服务器证书扩展(允许 IP 访问)

创建配置文件,确保证书包含 Docker 主机的 IP 信息:

echo "subjectAltName = IP:远程主机IP,IP:127.0.0.1" > extfile.cnf
echo "extendedKeyUsage = serverAuth" >> extfile.cnf

或使用域名

echo "subjectAltName = DNS:远程主机域名,IP:127.0.0.1" > extfile.cnf
echo "extendedKeyUsage = serverAuth" >> extfile.cnf
  1. 用 CA 签署服务器证书
openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
  1. 生成客户端证书
# 生成客户端私钥
openssl genrsa -out client-key.pem 4096
# 生成客户端证书请求(CSR)
openssl req -subj "/C=CN/ST=YourState/L=YourCity/O=YourOrg/CN=Client" -new -key client-key.pem -out client.csr
  1. 配置客户端证书扩展
echo "extendedKeyUsage = clientAuth" > extfile-client.cnf
  1. 用 CA 签署客户端证书
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -extfile extfile-client.cnf
  1. 清理临时文件并设置权限
# 删除不需要的请求文件
rm -v client.csr server.csr extfile.cnf extfile-client.cnf

# 限制私钥权限(Docker 要求权限不能太宽松)
chmod -v 0400 ca-key.pem server-key.pem client-key.pem
chmod -v 0444 ca.pem server-cert.pem client-cert.pem

证书部署

  • 将以下 3 个文件传到远程主机的对应目录:

    • ca.pem(CA 根证书)
    • server-cert.pem(服务器证书)
    • server-key.pem(服务器私钥)
  • 将以下 3 个文件复制到 客户端主机的对应目录:

    • ca.pem(CA 根证书,与服务器端相同)
    • client-cert.pem(客户端证书)
    • client-key.pem(客户端私钥)

修改远程主机的 Docker 配置文件

  1. 修改文件 /lib/systemd/system/docker.service

    [Service]
    # 在这一行中的添加
    #ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
    
  2. 找到 Docker 服务配置文件(不同系统路径不同):

  • Linux (Systemd):/etc/docker/daemon.json(若不存在则新建)
  • Windows:C:\ProgramData\Docker\config\daemon.json
  1. 添加证书相关配置:

    • 若需 TLS 加密(推荐生产环境),需额外配置证书

      {
        "tlsverify": true,
        "tlscacert": "/etc/docker/certs/ca.pem",
        "tlscert": "/etc/docker/certs/server-cert.pem",
        "tlskey": "/etc/docker/certs/server-key.pem"
      }
      
  2. 重启远程主机的 Docker 服务

  • Linux:

    systemctl daemon-reload
    systemctl restart docker
    
  • Windows:通过「服务」管理器重启「Docker Desktop Service」

验证远程 API 可访问

  1. 非加密
curl http://[远程主机IP/域名]:2375/version  # 能返回 Docker 版本信息即成功
  1. TLS加密

    curl https://[远程主机IP/域名]:2376/version --cacert ~/certs/ca.pem --cert ~/certs/client-cert.pem --key ~/certs/client-key.pem
    
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区