yaml文件:是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高,类似于json格式,语法简单
YAML通过缩进来表示数据结构,连续的项目用-减号来表示
yaml文件使用的注意事项:
1、大小写敏感
2、通过缩进表示层级关系
3、只能用空格缩进,不能用tab缩进
4、可以使用#注释
5、符号字符后面都有一个空格
6、单引号引起来的字符,会被当作普通字符串处理,“#&*”双引号里面是特殊字符,就是符号本来的意思
YAML文件的基本数据结构:
声明变量(标量,单个的,不可再分的值 字符串,整数,布尔类型):
name:guoqi
age:20
tall:yes
handsan:yes
wan:true
list(列表):表示有序的元素集合:
class:
??- guoqi
??- zirui
??- defu
键值对映射(千万不要用tab):
student:
??Name:guoqi
??Age:20
Student1:
??Name:zirui
??Age:18
注释:
# test
引用:
Student:&id1
??Name:guoqi
??Age:20
Student1:*id1
用&来定义锚点,用*来进行引用
字符串引号:
Name: ’guoqi’
Name: “guoqi”
Name: ‘$’
Name: “$”
docker-compose:单机容器编排
Dockerfile:先配置好文件,然后build,镜像-------->容器
docker-compose既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器
docker-compose核心就是yml文件,可以定义容器的一切,通过yml
配置,直接运行容器
docker:主要服务于单节点,docker没有统一对外提供服务的端口和配置。docker一般都是内部访问,无需使用https
如果要对外以集群和分布式的方式提供统一访问的端口,,只能使用k8s+ingress
docker-compose的常用命令(需要在docker-compose.yml的文件或者目录下才能使用):
build:构建服务
ps:列出由docker-compose编排出来的容器
up:创建和启动容器
top:显示容器的进程
logs:查看容器的输出日志
down:删除容器,网络,以及数据卷
exec:在容器中执行命令
stop/start/restart:停止,启动,重启容器
scale:指定启动的容器数量(副本)
把docker-compose软件包拉到opt目录下
yum -y install tree
把nginx软件包拖进来
写个Dockerfile的配置文件
version: ‘3’
#指定docker-compose的文件版本
services:
#定义需要运行的服务
??nginx:
container_name:web1
#指定创建容器的名字
hostname:nginx
#指定容器的主机名
build:
#指定构建nginx容器的上下文以及dockerfile
??????context: /opt/compose-nginx/nginx
#指定dockerfile的位置,如果用镜像,就换成image:
??????dockerfile: Dockerfile
ports:
#直接指定宿主机和容器的端口映射关系
??- 1213:80
networks:
#声明给容器指定的ip地址
??????mynet:
version ‘3’
#指定docker-compose的文件版本
service:
#定义需要运行的服务
??nginx:
????container_name:web1
#指定创建容器的名字
????hostname:nginx
#指定容器的主机名
????build:
#指定构建nginx容器的上下文以及dockerfile
??????context: /opt/compose-nginx/nginx
#指定dockerfile的位置,如果用镜像,就换成image:
??????dockerfile: Dockerfile
????ports:
#直接指定宿主机和容器的端口映射关系
??????- 1213:80
????networks:
#声明给容器指定的ip地址
??????mynet:
#自定义网络
????????ipv4_address: 172.18.0.10
????volumes:
??????- /opt/compose-nginx/www:/usr/local/nginx/html
networks:
#创建自定义网桥接口配置
??mynet:
????driver: bridge
#声明网段的类型
????ipam:
#IP地址的管理和配置(声明网段)
??????config:
#子网配置,指定IP地址的范围:
????????- subnet: 172.18.0.0/16
切换到opt目录下
进入到文件里开始构建
docker-compose -f docker-compose.yml up -d
docker-compose:命令的开头,使用docker-compose进行容器编排
-f:使用特定的compose的模板文件,一般都是用docker-compose.yml
-p:project-name:指定项目名称,如果不加,会使用目录名称
-d:后台运行
docker pull centos:7
如果yum安装报错 ,就重启docker
可以查看一下镜像
再查看一下容器
查看网络
上浏览器查看一下
创建目录lnmp
cd /opt
mkdir lnmp
(以上内容可以看昨天的实验)
vim docker-compose.yml
version: '3'
services:
??nginx:
????hostname: nginx
????build:
??????context: /opt/lnmp/nginx/
??????dockerfile: Dockerfile
????ports:
??????- 1314:80
????container_name: nginx_server
????networks:
??????lnmp:
????????ipv4_address: 172.111.0.10
????volumes:
??????- "nginx-data:/usr/local/nginx/html"
??mysql:
????hostname: mysql
????build:
??????context: /opt/lnmp/mysql/
??????dockerfile: Dockerfile
????ports:
??????- 3306:3306
????container_name: mysql_server
????networks:
??????lnmp:
????????ipv4_address: 172.111.0.20
????privileged: true
????volumes:
??????- "mysql-data:/usr/local/mysql/"
??php:
????hostname: php
????build:
??????context: /opt/lnmp/php/
??????dockerfile:?Dockerfile
????ports:
??????- 9000:9000
????container_name: php_server
????networks:
??????lnmp:
????????ipv4_address: 172.111.0.30
????volumes:
??????- "nginx-data:/usr/local/nginx/html/"
??????- "mysql-data:/usr/local/mysql/"
networks:
??lnmp:
????driver:?bridge
????ipam:
??????config:
????????- subnet: 172.111.0.0/16
volumes:
??nginx-data:
??mysql-data:
docker-compose -f docker-compose.yml up -d
进入容器的数据库进行赋权:
如果进入浏览器忘记密码,那就删库重新创(就是databases)
docker-compose:单机容器编排工具,可以实现一键式的拉取镜像和创建容器
yml文件的格式:
version: ‘3’
解析代码的版本,声明解释器
services:
#声明服务,可以有多个services
networks:
#写在服务配置,赋予容器ip地址
写在顶格,就是大的模块,创建网段
volumes:
nginx-data:/usr/local/nginx/
volumes:
??nginx-data:
??mysql-data: