docker compose.yml学习
docker compose
安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composeln -s /usr/local/bin/docker-compose /usr/bin/docker-composedocker-compose version
容器创建
创建网络
设置固定ip
docker network create --subnet=172.19.0.0/18 mynetwork
docker-compose安装 mysql
遇到的问题
changing ownership of '/var/lib/mysql/': Permission denied
设置 privileged: true
属性
privileged: true 容器设置root属性
command: --lower_case_table_names=1 忽略大小写networks:default:ipv4_address: 172.19.0.2 绑定ip
version: '3'
services:mysql:image: mysql:8.0.23container_name: mysql_demo1ports:- '13001:3306'command: --lower_case_table_names=1volumes:- /data/mysql_demo1/config:/etc/mysql/conf.d- /data/mysql_demo1/data:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=abc123456- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.19.0.2privileged: true networks:default:external:name: mynetwork
启动命令
docker-compose up -d指定文件启动
docker-compose -f docker-compose.yaml up
version : '3' #compose文件版本支持特定的Docker版本
services: #本工程的服务配置列表mysql_demo1: #服务名,自定义container_name: docker-compose-mysql-demo #容器名image: mysql:8.0.23 #指定基于mysql:5.7镜像为基础镜像来构建镜像。ports:- "13001:3306"command: [ #使用command可以覆盖容器启动后默认执行的命令'--character-set-server=utf8mb4', #设置数据库表的数据集'--collation-server=utf8mb4_unicode_ci', #设置数据库表的数据集'--default-time-zone=+8:00' #设置mysql数据库的时区问题]environment: MYSQL_ROOT_PASSWORD: abc123456 #设置root连接密码MYSQL_ROOT_HOST: '%'volumes:- /root/docker-compose/mysql/data:/var/lib/mysql- /root/docker-compose/mysql/config:/etc/mysql/conf.drestart: alwaysnetworks:default:ipv4_address: 172.19.0.2privileged: true
networks:default:external:name: mynetwork #自定义的网络
安装备份
version: '3'
services:mysql1:image: mysql:8.0.23container_name: mysql_1ports:- '12001:3306'command: --lower_case_table_names=1volumes:- /data/mysql_1/config:/etc/mysql/conf.d- /data/mysql_1/data:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=abc123456- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.18.0.2privileged: truerestart: alwaysdeploy:resources:limits:memory: 400mmysql2:image: mysql:8.0.23container_name: mysql_2ports:- '12002:3306'command: --lower_case_table_names=1volumes:- /data/mysql_2/config:/etc/mysql/conf.d- /data/mysql_2/data:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=abc123456- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.18.0.3privileged: truerestart: alwaysdeploy:resources:limits:memory: 400mmysql3:image: mysql:8.0.23container_name: mysql_3ports:- '12003:3306'command: --lower_case_table_names=1volumes:- /data/mysql_3/config:/etc/mysql/conf.d- /data/mysql_3/data:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=abc123456- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.18.0.4privileged: truerestart: alwaysdeploy:resources:limits:memory: 400mmysql4:image: mysql:8.0.23container_name: mysql_4ports:- '12004:3306'command: --lower_case_table_names=1volumes:- /data/mysql_4/config:/etc/mysql/conf.d- /data/mysql_4/data:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=abc123456- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.18.0.5privileged: truerestart: alwaysdeploy:resources:limits:memory: 400mmysql5:image: mysql:8.0.23container_name: mysql_5ports:- '12005:3306'command: --lower_case_table_names=1volumes:- /data/mysql_5/config:/etc/mysql/conf.d- /data/mysql_5/data:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=abc123456- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.18.0.6privileged: truerestart: alwaysdeploy:resources:limits:memory: 400m
networks:default:external: truename: mynet
redis
version: '3'
services:redis:image: redis:6.0.10container_name: redisports:- '16379:6379' command: ["redis-server","/usr/local/etc/redis/redis.conf"]volumes:- /root/redis/conf:/usr/local/etc/redisenvironment:- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.18.0.9privileged: truerestart: alwaysdeploy:resources:limits:memory: 200m
networks:default:external: truename: mynet
shell 命令创建redis mysql容器
docker-compose.yml
文件
version: '3'
services:mysql1:image: hub.c.163.com/library/mysql:5.7container_name: mysql_1ports:- '12001:3306'command: --lower_case_table_names=1volumes:- /root/mysql_1/config:/etc/mysql/conf.d- /root/mysql_1/data:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=kdzt123456.- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.18.0.2privileged: truerestart: alwaysdeploy:resources:limits:memory: 400m redis:image: redis:6.0.10container_name: redisports:- '16379:6379' command: ["redis-server","/usr/local/etc/redis/redis.conf"]volumes:- /root/redis/conf:/usr/local/etc/redisenvironment:- TZ=Asia/Shanghainetworks:default:ipv4_address: 172.18.0.9privileged: truerestart: alwaysdeploy:resources:limits:memory: 200m
networks:default:external: truename: mynet
shell命令
echo -e "\e[1;31m 安装docker开始====> \e[0m"sudo yum install -y yum-utils device-mapper-persistent-data lvm2 -y \sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -y \sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y \echo -e "\e[1;31m 启动docker服务====> \e[0m"sudo systemctl start docker \systemctl enable docker \echo -e "\e[1;31m 安装docker-compose========> \e[0m" \sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \chmod +x /usr/local/bin/docker-compose \echo -e "\e[1;31m 设置docker-compose 软连接===========> \e[0m" \ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose \echo -e "\e[1;31m 开始创建容器======》 \e[0m"echo -e "\e[1;31m 创建redis.conf=====> \e[0m"sudo tee /root/redis/conf/redis.conf <<-'EOF'
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 12
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
requirepass kdzt123456.
EOFecho -e "\e[1;31m 开始创建mysql、redis容器 \e[0m"docker-compose -f /root/docker/docker-compose.yml up -d