防火墙设置
查看防火墙状态
shell
firewall-cmd --state开启防火墙
shell
systemctl start firewalld关闭防火墙
shell
systemctl stop firewalld重启加载配置
shell
firewall-cmd --reload查看已开放端口
shell
firewall-cmd --list-ports开放与关闭端口
shell
# 开启指定端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp
# 开启一个范围
firewall-cmd --permanent --zone=public --add-port=80-90/tcp
# 移除端口
firewall-cmd --permanent --zone=public --remove-port=3306/udp查看端口对应服务
shell
lsof -i:PORT查看端口使用情况
shell
netstat -lnp可以直接开放虚拟网卡,无需指定端口
shell
firewall-cmd --permanent --zone=trusted --change-interface=docker0安装Docker(CentOS/Redhat)
添加仓库地址
shell
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo移除旧依赖
shell
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine安装Docker
shell
# 增加仓库地址
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 移除旧Docker安装新的
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 安装docker组件
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 开机启动
systemctl enable docker
# 阿里镜像使用
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]CentOS8注意
shell
// Centos8安装依赖
yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm安装Docker(Ubuntu/debian)
卸载旧依赖
shell
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done检查更新 安装Docker存储库
shell
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get updateAPT安装Docker
shell
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin获取容器IP
shell
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-ID>Docker设置国内代理vim编辑 /etc/docker/daemon.json
shell
{
"registry-mirrors": ["https://ygdfd2ok.mirror.aliyuncs.com"]
}进入容器
sh
docker exec -it 容器名称或者ID /bin/sh增加 Docker-Compose
sh
# 下载Docker-Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋权
sudo chmod +x /usr/local/bin/docker-compose
# 如果还是不行
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose开放远程调用
防火墙设置-增加端口
shell
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --reload生成证书
shell
# 服务端证书设置
# 生成CA私钥 ca-key.pem
openssl genrsa -aes256 -out ca-key.pem 4096
# 输入ca-key.pem 密码
<密码>
# 确认ca-key.pem 密码
<密码>
# 生成CA公钥 ca.pem
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
# 输入ca.pem密码
<密码>
# 输入国家代号(XX)俩个字母表示
CN
# 省名称
Shanxi
# 城市名次
Xinzhou
# 公司名称
Qolome
# 所属组织部门
Development
# 服务器名称(域名/主机名/访问名称)
qolome-server
# 邮件地址
xxx@qolome.com
# 创建服务器密钥和
openssl genrsa -out server-key.pem 4096
# 创建服务器书签名请求
openssl req -subj "/CN=qolome-server" -sha256 -new -key server-key.pem -out server.csr
# 用CA签署公钥
echo subjectAltName = DNS:qolome-server,IP:192.168.1.9 >> extfile.cnf
# 将Docker守护程序密钥的扩展用法属性设置为仅用于服务器身份验证
echo extendedKeyUsage = serverAuth >> extfile.cnf
# 生成签名证书
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
输入ca.pem密码
<密码>
# 客户端证书设置
# 生成客户端私钥
openssl genrsa -out key.pem 4096
# 生成客户端证书签名请求
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
# 客户端扩展配置文件
echo extendedKeyUsage = clientAuth > extfile-client.cnf
# 生成签名证书
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf
# 输入ca.pem密码
<密码>
$ 安全地删除两个证书签名请求和扩展配置文件
rm -v client.csr server.csr extfile.cnf extfile-client.cnf
# 默认umask密钥为022,您的密钥对您和您的组是全球可读的且可写的。为了保护您的钥匙免遭意外损坏,请删除其写权限。
chmod -v 0400 ca-key.pem key.pem server-key.pem
# 证书可以在世界范围内读取,但您可能希望删除写访问权限以防止意外损坏:
chmod -v 0444 ca.pem server-cert.pem cert.pem配置/etc/docker/daemon.json文件
vim /etc/docker/daemon.json
json
{
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server-cert.pem",
"tlskey": "/etc/docker/server-key.pem",
"hosts": ["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
"registry-mirrors": [
"https://ygdfd2ok.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn" ]
}复制证书
shell
# 将server中所有文件拷贝至 /etc/docker/
# 将switch中所有文件拷贝到/root/.docker目录
# 将switch中所有文件拷贝至 客户端
mkdir server && cp ca.pem server-cert.pem server-key.pem server
mkdir switch && cp ca.pem cert.pem key.pem switch
cp server/* /etc/docker
cp switch/* /root/.docker
vim /lib/systemd/system/docker.service
# 修改/lib/systemd/system/docker.service文件中的配置
ExecStart = /usr/bin/dockerd
# 将DOCKER_HOST和DOCKER_TLS_VERIFY变量写入/etc/profile文件
echo "export DOCKER_HOST=tcp://192.168.1.9:2376" >> /etc/profile
echo "export DOCKER_TLS_VERIFY=1" >> /etc/profile
source /etc/profile
# 重新加载配置并重启docker
systemctl daemon-reload && systemctl restart docker
# 同样将CA证书、客户端证书、客户端密钥文件拷贝()也就是switch中的所有文件)到当前系统用户目录下的./docker文件夹
C:\Users\XXX(当前用户)\.docker ca.pem cert.pem key.pem
# 修改环境变量DOCKER_HOST和DOCKER_TLS_VERIFY
# DOCKER_HOST= tcp://192.168.1.10:2376
# DOCKER_TLS_VERIFY=1Software
相关参数说明
sh
--restart=always 自动重启容器
--name some-mysql 分配给容器的名称
-v /my/own/datadir:/var/lib/mysql 对应主机的挂载地址
-e XXXX=xxx 加入对应参数
-d 后台启动
-p 8080:8080 外部端口:容器端口