CentOS Stream 9部署docker,并开启API
1、安装docker
(1)安装Docker的依赖项和存储库
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
(2)安装Docker
sudo dnf install -y docker-ce docker-ce-cli containerd.io
(3)启动Docker服务
sudo systemctl start docker
(4)验证Docker服务的状态
sudo systemctl status docker
(5)开机启动docker
sudo systemctl enable docker
sudo systemctl is-enabled docker
2、开启Docker Remote API: unix(unix本地使用)
配置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。修改后的行应如下所示:
(3)重新加载Docker配置:
sudo systemctl daemon-reload
(4)重启Docker服务
sudo systemctl restart docker
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端口。修改后的行应如下所示:
(3)重新加载Docker配置:
sudo systemctl daemon-reload
(4)重启Docker服务
sudo systemctl restart docker
(5)验证Docker Remote API
curl http://localhost:2375/version
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端口。修改后的行应如下所示:
(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
(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
}
(5)重载配置、重启服务
systemctl daemon-reload
systemctl restart docker
(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
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
(2)授予执行权限:下载完成后,为docker-compose二进制文件授予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
(3)验证安装:运行以下命令验证docker-compose是否成功安装:
docker-compose --version
如果安装成功,你应该能够看到docker-compose的版本信息。