目录
一、YAML 文件格式及编写注意事项(重要)
1、yaml文件使用时注意事项:
2、yaml文件的基本数据结构:
2.1、声明变量(标量。是单个的不可再分的值,类型:字符串,整数,布尔类型)
2.2、list(列表):表示有序的元素集合
2.3、键值对映射:
2.4、注释:
2.5、引用:
2.6、字符串引号:
二、docker-compose
1、概述
2、docker-compose的常用命令:
3、docker-compose的三大概念
三、部署docker-compose
1、docker-compose安装:
2、创建工作目录,编写相关Dockerfile文件
3、编写配置文件docker-compose.yml
4、根据配置文件创建和启动容器
5、登录容器,进行相关操作
四、访问宿主机IP,安装Wordpress
一、YAML 文件格式及编写注意事项(重要)
yaml文件:是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高
类似于json格式。语法比json简单
yaml通过缩进来表示数据结构,连续的项目用-减号来表示
1、yaml文件使用时注意事项:
- 大小写敏感
- 通过缩进表示层级关系
- 只能用空格缩进,不能用tab键
- 可以使用#号键注释
- 符号字符后面都有一个空格 test: 2
- 单引号引起来的字符,会被当做普通字符串处理。"#$*",若双引号引来的特殊字符表示本意
2、yaml文件的基本数据结构:
2.1、声明变量(标量。是单个的不可再分的值,类型:字符串,整数,布尔类型)
name: test
age: 20
tall: yes
handsan: yes
wan: no
2.2、list(列表):表示有序的元素集合
class:
- test
- test1
- test2
2.3、键值对映射:
student:
name: test
age: 20
student1:
name: test1
age: 18
2.4、注释:
#test
2.5、引用:
student: &id1
name: test
age: 20
student1: *id1
#用&来定义锚点,用*来进行引用
2.6、字符串引号:
name: 'test'
name: "test"
name: '$' 表示字符串
name: "$" 表示$这个字符
二、docker-compose
1、概述
docker-compose:单机容器编排
Dockerfile:先配置好文件,然后build,镜像——>容器。
docker-compose:即可基于Dockerfile,也可以基于镜像,可以一键式拉起镜像和容器
docker-compose是基于python开发的,能运行docker的平台,都能用docker-compose编排管理容器。
本质就是在yaml格式的docker-compose配置模板文件里定义多个容器的启动参数和依赖关系,并使用docker-compose根据这个模板文件的配置启动和管理容器集群。
docker-compose核心就是yml文件,可以定义容器的一切。通过yml配置,直接运行容器
docker:主要服务于单节点。docker没有统一对外提供服务的端口和配置。docker一般都是内部访问。无需使用https。如果要对外以集群和分布式的方式提供统一访问的端口,K8S+ingress
2、docker-compose的常用命令:
必须有docker-compose.yml文件
build:构建服务
ps:列出由docker-compose编排出来的容器
up:创建和启动容器
top:显示容器的进程
logs:查看容器的输出日志
down:删除容器,网络,数据卷
exec:在容器中执行命令
stop/start/restart:停止/启动/重启
scale:指定容器服务启动的数量(副本)。
3、docker-compose的三大概念
项目project -> 包含一个或多个服务service -> 包含一个或多个容器的镜像、映射端口、环境变量等启动参数
1)默认使用项目的目录名做project项目名,支持使用 -p 或 --project-name 来指定项目名;
2)在项目目录里要包含一个 docker-compose 配置模板文件,默认为 docker-compose.yml,支持使用 -f 或 --file 来指定项目的配置模板文件;
3)在配置模板文件里要包含一个或者多个服务,每个服务包含启动容器的名称、镜像、映射端口、环境变量、挂载点、网络模式、依赖关系等容器启动的配置参数。
三、部署docker-compose
1、docker-compose安装:
2、创建工作目录,编写相关Dockerfile文件
提前将目录和文件准备好,详情可参考昨天的dockerfile部署lnmp
3、编写配置文件docker-compose.yml
编写配置文件docker-compose.yml
使用现有的镜像创建容器(本地/仓库) images: name:tag
或者现场构建,基于Dockerfile
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用户,但是是伪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:
4、根据配置文件创建和启动容器
docker-compose -f docker-compose.yml up -d
docker-compose:命令的开头,使用docker-compose进行容器编排
-f:使用特定的compose模版文件,一般都用docker-compose.yml
-p:project-name:指定项目名称,如果不加,会使用目录名称,可以不加
-d:后台运行
5、登录容器,进行相关操作
登录到Mysql容器给权限
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;
进入php容器,看挂载目录有没有挂载上: