一.Docker-compose 安装
#1.yum安装
yum install -y docker-compose
#2.官网下载
https://github.com/docker/compose/releases
二.Docker-compose 模板
version: '版本号'
services:
服务名称1:
image: 容器镜像
container_name: 容器名称
environment:
- 环境变量1=值1
- 环境变量2=值2
volumes:
- 宿主机数据目录:容器内数据目录
ports:
- 宿主机端口:容器内映射端口
networks:
- 自定义网络名称
links:
- 在两个容器之间创建网络连接,使一个容器能够通过别名访问另一个容器
command:
- 数据库使用字符集变量时可以用
restart: always
服务名称2:
image: 容器镜像
container_name: 容器名称
environment:
- 环境变量1=值1
- 环境变量2=值2
- 环境变量2: 值2
user: 宿主机用户:容器用户
volumes:
- 宿主机数据目录:容器内数据目录
ports:
- 宿主机端口:容器内映射端口
networks:
- 自定义网络名称
links:
- 在两个容器之间创建网络连接,使一个容器能够通过别名访问另一个容器
depends_on:
- 依赖服务,确保该服务启动前依赖的服务已经启动。
restart: always 容器退出时,Docker 将自动尝试重新启动它
networks:
default:
external: true
name: 自定义网络名称
三.docker-compose操作
# 第一次启动(需要创建容器)
[root@docker01 zabbix]# docker-compose up // 可以查看报错信息,前台运行
[root@docker01 zabbix]# docker-compose up -d // 放在后台运行
# 查看进程
[root@docker01 zabbix]# docker-compose ps
## 停止服务
[root@docker01 zabbix]# docker-compose stop
[root@docker01 zabbix]# docker-compose stop mysql57
## 启动服务
[root@docker01 zabbix]# docker-compose start
[root@docker01 zabbix]# docker-compose start mysql57
## 重启服务
[root@docker01 zabbix]# docker-compose restart
[root@docker01 zabbix]# docker-compose restart mysql57
## 查看日志
[root@docker01 zabbix]# docker-compose logs
[root@docker01 zabbix]# docker-compose logs zabbix-web
## 实时追踪日志
[root@docker01 zabbix]# docker-compose logs -f
[root@docker01 zabbix]# docker-compose logs -f zabbix-web
## 指定compose文件
[root@docker01 zabbix]# docker-compose -f zabbix-compose.yml ps
[root@docker01 zabbix]# docker-compose -f zabbix-compose.yml stop
四.docker-compose启动gitlab和jenkins
vim docker-compose.yml
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce
container_name: gitlab
hostname: 10.0.0.103
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://10.0.0.103'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
prometheus['enable'] = false
prometheus['monitor_kubernetes'] = false
prometheus_monitoring['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
grafana['enable'] = false
volumes:
- /opt/gitlab/config:/etc/gitlab
- /opt/gitlab/logs:/var/log/gitlab
- /opt/gitlab/data:/var/opt/gitlab
ports:
- 80:80
- 443:443
- 2222:22
shm_size: '256m'
restart: always
jenkins:
image: jenkins/jenkins
container_name: jenkins
volumes:
- /opt/jenkins/data:/var/jenkins_home
- /bin/docker:/bin/docker
- /var/run/docker.sock:/var/run/docker.sock
- /root/.ssh/:/root/.ssh/
- /root/.docker/config.json:/root/.docker/config.json
ports:
- 8080:8080
- 50000:50000
privileged: true
user: root
restart: always
version: '3.6'
services:
wordpress:
image: wordpress:6.4.2
container_name: wordpress
environment:
- WORDPRESS_DB_HOST=mysql57
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=123
- WORDPRESS_DB_NAME=wordpress
volumes:
- /data/wordpress/web:/var/www/html
ports:
- 80:80
networks:
- wordpress_network
depends_on:
- mysql57
restart: always
mysql57:
image: mysql:5.7
container_name: mysql57_wp
environment:
- MYSQL_ROOT_PASSWORD=123
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=123
volumes:
- /data/wordpress/mysql57:/var/lib/mysql
ports:
- 3306:3306
networks:
- wordpress_network
restart: always
networks:
wordpress_network: