一、安装docker和docker-compose
step 1: 下载二进制docker安装包
下载地址:https://download.docker.com/linux/static/stable/x86_64/
选择相应版本下载
Step 2: 上传二进制安装包到服务器
Step 3: 解压安装文件,并复制文件到/usr/bin
tar -zxvf docker-24.0.9.tgz
cp -p docker/* /usr/bin
Step 4: 将docker注册系统服务
vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/dockerd \
-H tcp://0.0.0.0:4243 \
-H unix:///var/run/docker.sock \
--selinux-enabled=false \
--log-opt max-size=1g
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Step 5:启动守护进程
systemctl daemon-reload
systemctl start docker
step 6: 设置docker开机自启
systemctl enable docker
step 7: 查看docker版本信息
docker version
step 8: 下载docker-compose,下载地址https://github.com/docker/compose/releases,将下载文件上传到服务器。
step 9: 将文件转移至/usr/local/bin/
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
step 10: 修改文件权限
chmod +x /usr/local/bin/docker-compose
step 11: 查看docker-compose版本
docker-compose -v
step 12: 修改docker镜像的存储位置
默认目录为/var/lib/docker
修改为/docker
1、停止docker
systemctl stop docker
2、移动/var/lib/docker 到/docker
mv /var/lib/docker /
3、创建软链接
ln -s /docker /var/lib/docker
4、启动服务
systemctl start docker
5、查看存储信息
docker info
二、安装汉化版Portainer-ce
step 13: 拉去汉化镜像
docker pull 6053537/portainer-ce
step 14: 运行portainer
docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /portainer_data:/data --restart always --privileged=true 6053537/portainer-ce:latest
三、Portainer基本操作
step 15:访问 portainer,首次访问需要设置一个12位密码
http://xx.xx.xx.xx:9000/
#图床logo
https://www.imgpp.com/s1/2022/12/22/dcde2b6635a588c7bfe0077055989a86.png
step 16:添加远程环境
1、使用agent方法,在节点上运行agent(docker安装步骤省略)
docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /docker/volumes:/var/lib/docker/volumes portainer/agent:latest
2、在portainer的环境中选择add Environments,选择docker standalone后启动向导,在向导中选择agent,填写name、Environment address,点击connect,连接成功后关闭向导。
3、使用API方法,首先获取API端口,查看/usr/lib/systemd/system/docker.service,在环境向导中选择API,填写name、Docker API URL,点击连接,连接成功后关闭向导。
四、发布应用
step 17:创建堆栈
登录portainer控制台:选择环境–>堆栈Stacks–>添加堆栈,输入堆栈名称Name和yaml信息,最后部署堆栈。
平台常用yaml
version: '3'
services:
gdmp-db:
image: postgres:latest
restart: always
environment:
POSTGRES_PASSWORD: xxxxx
volumes:
- /apps/pgsql/5432/data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime
ports:
- 5432:5432
gdmp-app:
user: root
restart: always
image: tomcat:8.5.87-jdk8-corretto
privileged: true
environment:
- TZ=Asia/Shanghai
ports:
- 8001:8080
volumes:
- /apps/gdmp/tomcat_8001/webapps/:/usr/local/tomcat/webapps/
- /apps/gdmp/tomcat_8001/conf:/usr/local/tomcat/conf
- /apps/gdmp/tomcat_8001/logs:/usr/local/tomcat/logs
- /apps/gdmp/tomcat_8001/bin:/usr/local/tomcat/bin
- /apps/gdmp/tomcat_8001/bin/upload:/usr/local/tomcat/upload
- /apps/gdmp/tomcat_8001/bin/tmp:/usr/local/tomcat/tmp
- /root/.gdmp:/root/.gdmp
- /etc/localtime:/etc/localtime
- /usr/share/fonts/:/usr/share/fonts/
五、镜像构建
step 18:docker file
例1:
FROM tomcat:8.5.87-jdk8-corretto
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai"> /etc/timezone
RUN setenv.sh /usr/local/tomcat/bin
RUN chmod 0755 usr/local/tomcat/bin/setenv.sh
RUN rm -rf /usr/local/tomcat/conf/server.xml
ADD server.xml/usr/local/tomcat/conf/server.xml
RUN chmod 0755 usr/local/tomcat/conf/server.xml
RUN mkdir /usr/local/tomcat/webapps/ROOT
ADD ROOT /usr/local/tomcat/webapps/ROOT
RUN mkdir /root/.gdmp
RUN chmod 0755 /root/.gdmp
ADD license.key /root/.gdmp
RUN chmod 0755 /root/.gdmp/license.key
RUN mkdir /usr/share/fonts/win
RUN mkdir /usr/share/fonts/win/Fonts
ADD Fonts /usr/share/fonts/win/Fonts
RUN fc-cache -fv
例2:
FROM alpine:3.18
WORKDIR /usr/local
ADD apache-tomcat-8.5.100.tar.gz .
ADD jdk-8u391-linux-x64.tar.gz .
COPY *.apk ./
RUN sed -i s#dl-cdn.alpinelinux.org#mirrors.aliyun.com#g /etc/apk/repositories \
&& apk add --allow-untrusted --no-cache tzdata glibc-i18n-2.35-r0.apk glibc-bin-2.35-r0.apk glibc-2.35-r0.apk || echo "忽略" \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& rm -rf /lib/libc.musl-x86_64.so.1 \
&& ln -s /usr/glibc-compat/lib/ld-linux-x86-64.so.2 /lib/libc.musl-x86_64.so.1 \
&& rm -rf *.apk \
&& rm -rf /var/cache/apk/*
ENV JAVA_HOME=/usr/local/jdk1.8.0_391
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
ENV CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.100/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.100/logs/catalina.out
例3:
FROM centos
ADD apache-tomcat-8.5.100.tar.gz /usr/local/
ADD jdk-8u391-linux-x64.tar.gz /usr/local/
RUN chmod -R 755 /usr/local/jdk1.8.0_391
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
ENV JAVA_HOME=/usr/local/jdk1.8.0_391
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
ENV CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.100/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.100/logs/catalina.out
六、本地仓库
step 19:创建本地仓库
创建仓库目录
mkdir -p /docker/registry
拉取仓库镜像
docker pull registry:latest
运行仓库容器
docker run -d -v /docker/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
创建镜像加速文件(远程docker需要同样需要配置)
mkdir /etc/docker
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.71.41:5000"],
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
重启docker
systemctl restart docker.service
获取本地镜像列表
curl -XGET http://192.168.1.60:5000/v2/_catalog
为镜像打标签
docker tag gdmp:latest 192.168.1.60:5000/gdmp:latest
推送镜像到本地仓库
docker push 192.168.1.60:5000/gdmp:latest
七、部署zabbix监控
step 20:创建专用于 Zabbix 组件容器的网络:
docker network create --subnet 172.21.0.0/16 --ip-range 172.21.240.0/20 zabbix-net
通过–ip-range参数告知Macvlan网络在子网中有哪些IP地址可以分配给容器。这些地址必须被保留,不能用于其他节点或者DHCP服务器,因为没有任何管理层功能来检查IP区域重合问题。
默认网络172.17.0.0/16
step 21:启动空的 PostgreSQL server 实例:
docker run --name postgres-server -t \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="Zabbix321" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
--restart unless-stopped \
-d postgres:latest
docker exec -t postgres-server psql -U zabbix -c "CREATE USER grafana WITH PASSWORD 'Zabbix321';"
docker exec -t postgres-server psql -U zabbix -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO grafana;"
step 22: 启动 Zabbix snmptraps 实例:
docker run --name zabbix-snmptraps -t \
-v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw \
-v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro \
--network=zabbix-net \
-p 162:1162/udp \
--restart unless-stopped \
-d zabbix/zabbix-snmptraps:latest
step 23:启动 Zabbix server 实例,并将其关联到已创建的 PostgreSQL server 实例:
docker run --name zabbix-server-pgsql -t \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="Zabbix321" \
-e POSTGRES_DB="zabbix" \
-e ZBX_ENABLE_SNMP_TRAPS="true" \
--network=zabbix-net \
-p 10051:10051 \
--volumes-from zabbix-snmptraps \
--restart unless-stopped \
-d zabbix/zabbix-server-pgsql:latest
step 24:启动 Zabbix Web 界面,并将其关联到已创建的 PostgreSQL server 和 Zabbix server 实例:
docker run --name zabbix-web-nginx-pgsql -t \
-e ZBX_SERVER_HOST="zabbix-server-pgsql" \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="Zabbix321" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
-p 1443:8443 \
-p 8080:8080 \
-v /etc/ssl/nginx:/etc/ssl/nginx:ro \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-pgsql:latest
sudo docker logs zabbix-server-pgsql -f -n 222
sudo docker exec -it zabbix-server-pgsql bash
sudo docker restart zabbix-server-pgsql
sudo docker stop zabbix-server-pgsql
sudo docker start zabbix-server-pgsql
step 25:登录UI,设置语言
http://192.168.71.42:8080/
输入用户名 Admin 以及密码 zabbix
设置语言为中文
step 26:安装agent2
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8.noarch.rpm
dnf install -y zabbix-agent2 zabbix-agent2-plugin-*
sed -i -e 's/Server=127.0.0.1/Server=192.168.71.42/g' -e 's/ServerActive=127.0.0.1/ServerActive=192.168.71.42/g' -e "/^Hostname=/c\#Hostname=Zabbix server" /etc/zabbix/zabbix_agent2.conf
systemctl restart zabbix-agent2
systemctl enable zabbix-agent2
tail -f /var/log/zabbix/zabbix_agent2.log
step 27:添加主机
EOF