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. 下载离线安装包
下载页面仅保留最新版本rpm包,故搜索时请根据名称搜索,不要加版本号
先在本地通过该地址下载对应版本的rpm包,本教程需下载以下14个包:
- docker-ce-20.10.8-3.el7.x86_64.rpm 下载地址1
- docker-ce-cli-20.10.8-3.el7.x86_64.rpm 下载地址1
- containerd.io-1.4.9-3.1.el7.x86_64.rpm 下载地址1
- container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm 下载地址2
以下均为下载地址3
- libselinux-2.5-15.el7.x86_64.rpm
- libselinux-python-2.5-15.el7.x86_64.rpm
- libselinux-utils-2.5-15.el7.x86_64.rpm
- libsemanage-2.5-14.el7.x86_64.rpm
- libsemanage-python-2.5-14.el7.x86_64.rpm
- libsepol-2.5-10.el7.x86_64.rpm
- policycoreutils-2.5-34.el7.x86_64.rpm
- policycoreutils-python-2.5-34.el7.x86_64.rpm
- selinux-policy-3.13.1-268.el7.noarch.rpm
- selinux-policy-targeted-3.13.1-268.el7.noarch.rpm
- 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,安装教程
开始安装
下载安装包
下载地址,打开页面后,点击图示位置下载
安装
安装包下载完成后打开安装
出现提示时,请确保选择或不选择配置页面上的 使用 WSL 2 而不是 Hyper-V
选项,具体取决于您选择的后端。建议勾选。
设置国内镜像源
在设置->Docker Engine中添加如下配置,可自行替换其他源,然后点击Apply
"registry-mirrors": ["http://hub-mirror.c.163.com"]
常用命令
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 证书
-
创建工作目录并进入
mkdir -p ~/docker-certs && cd ~/docker-certs
-
生成 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
(组织名)为实际信息
- 生成服务器证书
用于远程 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(或域名,若用域名访问)
- 配置服务器证书扩展(允许 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
- 用 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
- 生成客户端证书
# 生成客户端私钥
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
- 配置客户端证书扩展
echo "extendedKeyUsage = clientAuth" > extfile-client.cnf
- 用 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
- 清理临时文件并设置权限
# 删除不需要的请求文件
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 配置文件
-
修改文件
/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
-
找到 Docker 服务配置文件(不同系统路径不同):
- Linux (Systemd):
/etc/docker/daemon.json
(若不存在则新建) - Windows:
C:\ProgramData\Docker\config\daemon.json
-
添加证书相关配置:
-
若需 TLS 加密(推荐生产环境),需额外配置证书
{ "tlsverify": true, "tlscacert": "/etc/docker/certs/ca.pem", "tlscert": "/etc/docker/certs/server-cert.pem", "tlskey": "/etc/docker/certs/server-key.pem" }
-
-
重启远程主机的 Docker 服务
-
Linux:
systemctl daemon-reload systemctl restart docker
-
Windows:通过「服务」管理器重启「Docker Desktop Service」
验证远程 API 可访问
- 非加密
curl http://[远程主机IP/域名]:2375/version # 能返回 Docker 版本信息即成功
-
TLS加密
curl https://[远程主机IP/域名]:2376/version --cacert ~/certs/ca.pem --cert ~/certs/client-cert.pem --key ~/certs/client-key.pem
评论区