YML文件是什么?
容器一键化部署的工具,针对Dockerfile,可以按照定制化的模式一键部署dockerfile创建的容器。定制:YAML文件。
YAML是一种标记语言,直观的展示数据序列化的格式。可读性高
数据格式的结构是通过缩进来进行表示的
注意事项:
1、大小写敏感,严格区分
2、通过缩进表示层级关系
3、不能用tab缩进,必须用空格缩进
4、#可以注释
5、符号之后必须缩进一格
6、特殊字符必须用单引号,字符串用双引号。
数据结构:
name: “luoyuhao”
age: 30
isStudent: ‘true’/flase
字符串,整数,布尔类型,也可以是小数点
列表结构,表示有序的元素的集合,使用-开头:
xy102:
-*luo
-*yu
-*hao
*代表空格
Mpas(映射),相当于字典或者对象。用键值对表示:
man:
name: luo
age: 20
多行文本块:|
shuoming: |
this is xy102
luo is first
ta 20 le
默认文本换行展示
Docker-compose的常用命令:
运行docker-compose只能在有docker.yml配置文件的目录内执行
docker-compose拉取的镜像生成的容器。
up docker-compose 创建和启动容器
scale 创建容器的数量
top 显示容器的进程
logs 看容器的输出日志
stop start restart 停止,重启,启动
down 删除容器,网络,数据卷,镜像。
version: '3'
定义docker-compose文件的版本,2.0之后都是3,顶格写就是全局使用
service:
定义镜像和容器的配置:
nginx:
container_name: web1
定义容器的名字,web1
hostname: nginx1
定义创建好之后容器的主机名
build:
构建的是dockerfile.
context: /opt/nginx1
声名上下文,上文是构建dockerfile,下文是context,告诉你dockerfile的路径
dockerfile: Dockerfile
ports:
- 80:80
-*443:443
networks:
mynet:
ipv4: 172.18.0.10
volumes:
-*/opt/nhtml:/usr/local/nginx/html/
networks:
mynet:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
docker-compose-f docker-compose.yml up -d
docker-compose:使用docker-compose一键编排容器
-f:使用模版文件,必须是.yml结尾
docker-compose的核心就是yml文件,就是把docker run的命令写成代码。
部署docker-compose.yml:
version: '3'
services:
nginx:
hostname: nginx1
container_name: nginx_server
build:
context: /opt/nginx
dockerfile: Dockerfile
ports:
- 80:80
- 443:443
networks:
lnmp:
ipv4_address: 172.111.0.10
volumes:
- /opt/nginx:/opt/docker-nginx
mysql:
hostname: mysql
container_name: mysql_server
build:
context: /opt/mysql
dockerfile: Dockerfile
ports:
- 3306:3306
networks:
lnmp:
ipv4_address: 172.111.0.20
privileged: true
volumes:
- /opt/mysql:/opt/docker-mysql
php:
hostname: php
container_name: php_server
build:
context: /opt/php
dockerfile: Dockerfile
ports:
- 9000:9000
networks:
lnmp:
ipv4_address: 172.111.0.30
volumes_from:
- "nginx"
- "mysql"
networks:
lnmp:
driver: bridge
ipam:
config:
- subnet: 172.111.0.0/24