mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
是一种标记语言,以竖列的形式展示一个序列化的数据格式,可读性很高,类似于json格式,语法简单,yaml通过缩进来表示数据结构,连续的项目用-来表示
(准确的来说应该叫标量,单个的不可再分的值,包含的类型字符串,整数,布尔类型):
Name :wang
Age :24
Handsome : yes
Wan : no
Class:
例如:
Student:&id1
Name: guoqi
Age:20
Stuent1:*id1
用&来定义锚点,用*来进行引用
Name: ‘guoqi’
Name: ‘guoqi’
Name: ‘$’
Name: “$”
两者打印的值不一样,一个打印的就是符号,应该打印的就是值
Docke-compose单机容器编排
Dockerfile 先配置好文件,然后build,镜像------>容器
Docker-compose 既可以基于Dockerfile,也可以基于镜像,一键式拉起镜像和容器
Docker-compose核心就是yml文件,可以定义容器的一切,通过yml配置,直接运行容器
什么时候用到docker:主要用于单节点,本地,一般都是内部访问,无需使用https,docker没有统一对外通过服务的端口和配置
如果要对外以集群和分布式的方式是提供统一的访问的端口,通过k8s+ingress
Docker-compose的命令必须用于用于dock-compse的yml文件之下
PS:列出由docker-compose编排出来的容器
Build:构建服务
UP:创建和启动容器
Top:显示容器进程
Logs:查看容器的日志
Down:删除容器,网络,数据卷
Exec:在容器当中执行命令
Stop/start/retart:停止,启动,重启容器
Scale:指定启动容器的数量(副本)
以编译安装nginx为例
按照下列格式创建目录,分别创建docker-compose.yml nginx www目录,目录格式注意
yum -y install tree安装树结构
在www目录内编辑内容,方便展示,nginx的目录用Dockerfile的形式,创建,前一篇博客有讲明
编辑docker-compose.yml
version: '3'
services:
nginx:
container_name: web1
hostname: nginx
build:
context: /opt/compose-nginx/nginx
dockerfile: Dockerfile
ports:
- 1213:80
networks:
mynet:
ipv4_address: 172.18.0.10
volumes:
- /opt/compose-nginx/www:/usr/local/nginx/html
networks:
mynet:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
在compose-nginx目录下启动
docker-compose -f docker-compose.yml up -d
Docker-compose:命令的开头,使用docker-compose进行容器编排
-f:使用特定的compose的模版文件,一般都用docker-compose.yml
-p:project-name:指定项目名称,如果不加,会使用目录名称
-d:后台运行
docker-compose -f docker-compose.yml up -d
创建完成
Dockercompose常用命令查看
docker compose ps
浏览器访问
首先创建lnmp目录
配置nginx
配置MySQL
配置PHP
在主目录,创建dockercompose
创建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
部署完成
查看检查镜像和运行的容器
进入数据库赋权
docker exec -it mysql_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;
20.0.0.62:1314/wordpress/index