dockerfile---yml文件
docker-compose需要用到 yml文件
yml文件是什么?
是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高,类似于json格式。语法简单。
YAML通过缩进来表示数据结构,连续的项目用 - 减号来表示。(filebeat,logstash)
yml文件使用的注意事项
1.大小写敏感
2.通过缩进表示层级关系
3.只能用空格缩进不能用tab缩进
4.可以使用 # 注释
5.凡是符号字符,后面都有一个 空格
(挂载键不需要空格)
6.单引号引起来的字符,会被当成普通字符串处理,双引号里面是特殊字符,就是本意。
yml文件的基本数据结构
声明变量(标量,单个的,不可再分的值):
包含的类型(字符串,整数,布尔类型)
name: zzr
age: 21
tail: yes
名称:[空格]值
list(列表):表示有序的元素集合
class:
- zzr
- hj
- zhaozirui
键值对映射
student:
name: zzr
age: 20
student:
name: hj
age: 18
引用
student: &id1
name: zzr
age: 20
引用:
student1: *id1
&:定义锚点
*:引用
字符串引用:
name: "guoqi"
name: 'guoqi'
name: '$'
普通字符
name: "$"
仅仅是个$符号
docker-compose单机容器编排
dockerfile是先配置好文件,然后再构建镜像-------》容器。
docker-compose既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。
docker-compose的核心就是yaml文件,可以定义容器的一切。通过yml配置,直接运行容器
docker:单节点。docker没有统一的对外提供服务的端口和配置。docker一般都是内部访问。无需使用https。
如果要对外以集群和分布式的方式提供统一访问的端口,只有用k8s+ingress。
docker-compose的常用命令
docker-compose的命令只能执行在有docker-compose.yml的目录下。
build:构建服务
ps:列出由docker-compose编排出来的命令
up:创建和启动容器
top:显示容器的进程
logs:查看容器的输出日志。
down:删除容器,网络,数据卷。
exec:在容器当中执行命令
stop/start/restart:停止 / 启动 / 重启,容器
scale:指定启动的容器数量(副本)。
安装compose
cd /opt
拖入compose安装包
mv .... docker-compose
mv docker compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
查看docker-compose的运行结构
yum -y install tree
观察docker-compose运行的结构
通过docker-compose安装lnmp
具体的nginx,mysql,php请翻阅之前博客
点击这里
nginx
vim Dockerfile
vim nginx.conf
mysql
vim Dockerfile
vim my.cnf
php
vim php-fpm.conf
vim php.ini
vim www.conf
vim Dockerfile
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
//虽然我们登陆容器,显示的是root用户,伪管理员,一旦privileged:true,容器内的root用户和宿主机的root用户,拥有一样的权限,在生产能不给就不给。
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:
wq!
创建
docker-compose -f docker-compose.yml up -d