1、安装docker

(1)安装Docker的依赖项和存储库

#sudo dnf install -y dnf-plugins-core

CentOS Stream 9部署docker,并开启API_API

#sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

CentOS Stream 9部署docker,并开启API_API_02

(2)安装Docker

#sudo dnf install -y docker-ce docker-ce-cli containerd.io

CentOS Stream 9部署docker,并开启API_CentOS Stream 9_03

(3)启动Docker服务

# sudo systemctl start docker

CentOS Stream 9部署docker,并开启API_Docker_04

(4)验证Docker服务的状态

#sudo systemctl status docker

CentOS Stream 9部署docker,并开启API_docker_05

(5)开机启动docker

#sudo systemctl enable docker

CentOS Stream 9部署docker,并开启API_CentOS Stream 9_06

# sudo systemctl is-enabled docker

CentOS Stream 9部署docker,并开启API_CentOS Stream 9_07

2、开启Docker Remote API: unixunix本地使用)

配置Docker Remote API:默认情况下,Docker Remote API是禁用的。为了公开API,需要修改Docker的配置文件。

(1)使用以下命令打开配置文件:

#sudo vi /usr/lib/systemd/system/docker.service

(2)在配置文件中找到ExecStart一行,并在该行的末尾添加-H unix:///var/run/docker.sock。修改后的行应如下所示:

CentOS Stream 9部署docker,并开启API_docker_08

(3)重新加载Docker配置:

#sudo systemctl daemon-reload

CentOS Stream 9部署docker,并开启API_docker_09

(4)重启Docker服务

#sudo systemctl restart docker

CentOS Stream 9部署docker,并开启API_API_10

3、开启Docker Remote API: tcp(tcp远程使用,tcp不安全不推荐)

(1)使用以下命令打开配置文件:

#sudo vi /usr/lib/systemd/system/docker.service

(2)在配置文件中找到ExecStart一行,并在该行的末尾添加-H tcp://0.0.0.0:2375,表示监听所有IP地址的2375端口。修改后的行应如下所示:

CentOS Stream 9部署docker,并开启API_docker_11

(3)重新加载Docker配置:

#sudo systemctl daemon-reload

CentOS Stream 9部署docker,并开启API_CentOS Stream 9_12

(4)重启Docker服务

#sudo systemctl restart docker

CentOS Stream 9部署docker,并开启API_API_13

(5)验证Docker Remote API

#curl http://localhost:2375/version

CentOS Stream 9部署docker,并开启API_CentOS Stream 9_14

3、Docker Remote API:tcp&tls(远程使用,使用证书认证,远程推荐配置)

(1)使用以下命令打开配置文件:

#sudo vi /usr/lib/systemd/system/docker.service

(2)在配置文件中找到ExecStart一行,并在该行的末尾添加-H -H tcp://0.0.0.0:2376,表示监听所有IP地址的2376端口。修改后的行应如下所示:

CentOS Stream 9部署docker,并开启API_Docker_15

(3)使用脚本一键生成证书

新建脚本,证书生成路径/etc/docker/

#vi tls.sh

脚本内容:

#创建 Docker TLS 证书 
#!/bin/bash

SERVER="0.0.0.0" #需要修改为本机ip
PASSWORD="xxxx"
COUNTRY="CN"
STATE="guizhou"
CITY="guiyang"
ORGANIZATION="guanshanghu"
ORGANIZATIONAL_UNIT="ningan"
EMAIL="xxxx@163.com"

#临时文件夹
TEMP_DIR='/etc/docker/ca'

mkdir -p ${TEMP_DIR}
cd ${TEMP_DIR}

#生成`ca-key.pem` 文件 设置密码
openssl genrsa -aes256 -passout pass:${PASSWORD} -out ca-key.pem 4096 
echo "生成ca私钥完成"

#生成 `ca.pem` 文件,设置国家、省市、组织名、邮箱

openssl req -new -x509 -passin "pass:${PASSWORD}" -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=${COUNTRY}/ST=${STATE}/L=${CITY}/O=${ORGANIZATION}/OU=${ORGANIZATIONAL_UNIT}/emailAddress=${EMAIL}"
echo "填写配置信息完成"

#生成 `server-key.pem` 文件

openssl genrsa -out server-key.pem 4096

#生成 `server.csr` 文件

openssl req -subj "/CN=${SERVER}" -sha256 -new -key server-key.pem -out server.csr

#生成配置文件 `extfile.cnf` 

echo subjectAltName = IP:${SERVER},IP:0.0.0.0 > extfile.cnf

echo extendedKeyUsage = serverAuth >> extfile.cnf

#生成服务器证书,需要输入之前输入的密码
openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:${PASSWORD}" \-CAcreateserial -out server-cert.pem -extfile extfile.cnf

echo "生成自签证书完成"

#添加配置,使密钥适合客户端身份验证
echo extendedKeyUsage = clientAuth >> extfile.cnf
#生成 `key.pem` 文件
openssl genrsa -out key.pem 4096
#创建`client.csr`文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
#生成证书
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:${PASSWORD}" \-CAcreateserial -out cert.pem -extfile extfile.cnf
echo "生成client自签证书完成"
rm -v -f client.csr server.csr
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
echo "复制证书到指定目录"
cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/

执行tls.sh:

# sh tls.sh

CentOS Stream 9部署docker,并开启API_docker_16

(4)添加证书相关配置

#sudo vi /etc/docker/daemon.json

添加上下面这部分

{
 "tls": true,
 "tlscacert": "/etc/docker/ca.pem",
 "tlscert": "/etc/docker/server-cert.pem",
 "tlskey": "/etc/docker/server-key.pem",
 "tlsverify": true
}

CentOS Stream 9部署docker,并开启API_docker_17


(5)重载配置、重启服务

#systemctl daemon-reload 
#systemctl restart docker

CentOS Stream 9部署docker,并开启API_API_18


(6)验证

#docker --tlsverify --tlscacert=/etc/docker/ca/ca.pem --tlscert=/etc/docker/ca/cert.pem --tlskey=/etc/docker/ca/key.pem -H=0.0.0.0:2376 version

CentOS Stream 9部署docker,并开启API_CentOS Stream 9_19

4、安装二进制docker-compose

(1)下载docker-compose二进制文件:在Docker官方GitHub仓库的releases页面上,你可以找到docker-compose的可执行文件。使用以下命令下载最新版本的docker-compose:

#sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

CentOS Stream 9部署docker,并开启API_CentOS Stream 9_20

(2)授予执行权限:下载完成后,为docker-compose二进制文件授予执行权限:

#sudo chmod +x /usr/local/bin/docker-compose

CentOS Stream 9部署docker,并开启API_Docker_21

(3)验证安装:运行以下命令验证docker-compose是否成功安装:

#docker-compose --version

CentOS Stream 9部署docker,并开启API_Docker_22

如果安装成功,你应该能够看到docker-compose的版本信息。