Docker:先配置好文件,然后build,镜像---------------》容器
docker-compose 既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。
docker-compose 核心是yml文件,可以定义容器的一起,可以通过yml配置,直接运行容器。
docker主要应用于单节点,不适应于集群。docker没有统一对外提供服务的端口和配置。docker一般是内部服务器,无需使用https。如果要对外以集群和分布式的方式提供统一访问的端口,k8s+ingress。
build | 构建服务 |
ps | 列出docker-compose编排出来的容器 |
up | 创建和启动容器 |
top | 显示容器的进程 |
logs | 查看容器的输出日志 |
down | 删除容器,网络,数据卷。 |
exec | 在容器中执行命令 |
stop/start/restart | 停止/启动/重启容器 |
scale | 指定容器启动的容器数量(副本) |
yaml文件: 是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高类似于json格式。语法简单。
YAML通过缩进来表示数据结构,连续的项目用- 减号来表示。
声明变量(标量,单个的,不可再分的值 字符串,垫数,布尔类型):
name: tail
age: 20
list(列表):表示有序的元素集合。
class:(缩进两个字符)
- guoqi
- ren
- mao
键值对映射
student:(缩进两个字符)
name: liu
age: 18
注释:
#test
引用
student: &id1
name: liu
age: 20
引用
student1: *id1
用&来定义锚点,用*来进行引用
1、大小写敏感
2、通过缩进表示层级关系
3、只能用空格缩进,不能用tab缩进
4、可以使用注释#
5、符号后面都有一个空格 test:?
6、单引号引起来的符号,会被当作普通符号处理,^#&*双引号里面是特殊字符,就是本义。
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
version: '3'
#指定docker-compose的文件版本,解析代码的版本,声明解释器
services:
#定义需要运行的服务,声明服务,可以有多个services
nginx:
container_name: web1
#指定创建容器的名字
hostname: nginx
#指定容器的主机名
build:
#指定构建nginx的容器的上下文,以及dockerfile
context: /opt/nginx
#指定Dockerfile的位置,如果用镜像换成image:
dockerfile: Dockerfile
ports:
- 1213:80
#直接指定宿主机和容器的端口映射关系
networks:
#声明给容器指定的IP地址
mynet:
#自定义网络
ipv4_address: 172.18.0.10
指定ip地址
volumes:
- /opt/www:/usr/local/src/nginx-1.22.0/html
networks:
#创建自定义网桥接口配置,#写在服务配置,赋予容器ip地址,写在定格,大的模块,创建网段!
mynet:
driver: bridge
#声明网段类型
ipam:
#声明网段,IP地址的管理和配置
config:
- subnet: 172.18.0.0/16
#子网配置,指定IP地址的范围
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
docker exec -it mysq_server bash
mysql -u root -p
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;