基础环境#
系统环境:
操作系统:CentOS 7.9
软件环境:
Docker-26.1.4、Docker Compose-2.27.1 、portainer-2.20.3
配置阿里 yum 源 :
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
配置防火墙策略:
firewall-cmd --add-port=9443/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
安装 Docker#
(1)安装 yum-utils 软件包(提供 yum-config-manager 实用程序)并设置存储库。
# 安装 yum-utils 软件包
yum install -y yum-utils
# 设置docker-ce存储库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(2)安装最新版 docker 和 docker compose。
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
(3)修改 Docker 的数据目录为 “/data/dockerData”, 并修改 docker 镜像源。
# 创建Docker守护进程配置文件,编辑配置文件/etc/docker/daemon.json,配置docker数据目录,并修改docker镜像源
echo '{
"data-root": "/data/dockerData",
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://dockerhub.azk8s.cn",
"https://mirror.ccs.tencentyun.com",
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
]
}' > /etc/docker/daemon.json
(4)启动 Docker 服务,并设置为开机自启动。
# 启动Docker服务
systemctl start docker
# 设置Docker为开机自启动
systemctl enable docker
# 查看Docker服务状态
systemctl status docker
安装 portainer#
(1)拉取 portainer 镜像并创建容器
方式一:使用 docker 命令
docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer:/data portainer/portainer-ce:2.20.3
方式二:使用 compose 文件安装
vi portainer.yml
--------------------------------------------------
services:
portainer:
image: portainer/portainer-ce:2.20.3
container_name: portainer
restart: always
ports:
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /data/portainer:/data
user: "0"
networks:
net:
ipv4_address: 172.20.110.10
networks:
net:
driver: bridge
ipam:
config:
- subnet: 172.20.110.0/24
--------------------------------------------------
#运行安装
docker compose -f portainer.yml up -d
(2)初始化 portainer,设置 admin 用户的密码
(3)进入系统后,点击 “Get Started”,查看本机的容器,如下图。
多实例环境管理#
Portainer 可以管理多个环境,包括 Docker Standalone、Docker Swarm、Kubernetes、ACI 等。
使用 Portainer 管理多 Docker Standalone 实例,有两种方式,分别是 api 和客户端容器。
方式一:使用 docker api 管理 Docker Standalone 实例#
(1)在其他实例环境上,修改 docker 服务的配置文件,让 Docker 守护进程通过 TCP 在的 2375 端口监听连接,并通过 UNIX 套接字在本地监听连接。
即在 ExecStart 后添加 - H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 参数。
vi /usr/lib/systemd/system/docker.service
#修改内容如下
[Service]
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
(2)重新加载配置,使配置生效。
#重新加载配置
systemctl daemon-reload
#重启docker
systemctl restart docker
(3)设置防火墙策略
#只允许Portainer主机访问该主机的2375端口
sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.22.23/32" port protocol="tcp" port="2357" accept"
(4)点击 Environment-related 菜单中的 Environments,点击 Add environment 按钮,添加 Docker Standalone,如下图。
(5)选择 API,填写名称和 Docker Standalone 实例的 ip 和端口(2375),点击 Connect,连接成功后,点击 Close,如下图。
方式二:使用 agent 容器管理 Docker Standalone 实例#
(1)在其他实例环境上,部署 agent 容器进行连接,具体命令如下:
docker run -d \
-p 9001:9001 \
--name portainer_agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:2.20.3
(2)设置防火墙策略
#只允许Portainer主机访问该主机的9001端口
sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.22.23/9001" port protocol="tcp" port="9001" accept"
连接成功后,在 Home 界面查看两种方式连接的 Docker Standalone 实例