yml文件概述
是一种标记语言,以竖列的形式展示序列化的数据,可读性高。 类似于json格式,语法简单。 YAML通过缩进来标识数据结构,连续的项目用-减号来表示。
yml文件使用注意事项:
- 1、大小写敏感
- 2、通过缩进表示层级关系
- 3、只能用空格缩进,不能用tab键
- 4、可以使用#注释
- 5、符号字符后面都有一个空格
- 6、单引号引起来的字符,会被当做普通字符串处理,""#&"双引号里面是特殊字符,就是本义
Docker-compose单机容器编排
Dockerfile:先配置好文件,然后build镜像,再创建容器
Dockerfile-compose:既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。
Docker-compose核心就是yml文件,可以定义容器的一切,通过yml配置直接运行容器。
Docker-compose的常用命令:
build:构建服务
ps:列出由docker-compose编排出来的容器
up:创建和启动容器
top:显示容器的进程
logs:查看容器的输出日志
down:删除容器、网络、数据卷
exec:再容器中执行命令
stop/start/restart:停止,启动,重启容器
scale:指定启动的容器数量(副本)
Docker-compose搭建nginx
cd /opt
--上传docker-compose-linux-x86_64--
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
mkdir compose-nginx
cd compose-nginx
mkdir nginx
cd nginx
--上传nginx-1.22.0.tar.gz--
vim Dockfile
FROM centos:7
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin nginx
ADD nginx-1.22.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.22.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
ENTRYPOINT ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
cd ..
mkdir www
cd www
echo this is nginx1 > index.html
cd /opt/compose-nginx
tree
vim docker-compose.yml
#指定docker-compose的文件版本
version: '3'
#定义需要运行的服务
services:
#指定创建容器的名字
nginx:
container_name: web1
#指定容器的主机名
hostname: nginx
#指定构建nginx容器的上下文以及Dockerfile
build:
#指定Dockerfile的位置,如果用镜像则换成image:
context: /opt/compose-nginx/nginx
dockerfile: Dockerfile
#指定宿主机和容器的端口映射关系
ports:
- 1213:80
#声明给容器指定的IP地址
networks:
#自定义网络
mynet:
ipv4_address: 172.18.0.10
volumes:
- /opt/compose-nginx/www:/usr/local/nginx/html
#创建自定义网桥接口配置
networks:
mynet:
#声明网段的类型
driver: bridge
#声明网段,ip地址的管理和配置
ipam:
#子网配置,指定ip地址的范围
config:
- subnet: 172.18.0.0/16
docker-compose -f docker-compose.yml up -d
-------------------------------------------------------------------------------------------
docker-compose:命令开头,使用docker-compose进行容器编排
-f:使用特定的compose的模板文件,一般都用docker-compose.yml
-p:project-name:指定项目名称,如果不加会使用目录名称
-d:后台运行
-------------------------------------------------------------------------------------------
浏览器访问:20.0.0.10:1213
Docker-compose搭建LNMP
cd /opt
mkdir lnmp
cd lnmp
mkdir ngin mysql php
--Dockerfile文件配置具体参考上篇博客--
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
ntainer_name: mysql_server
networks:
lnmp:
ipv4_address: 172.111.0.20
privileged: true
#虽然我们登录容器,显示的是root用户,没有给privileged的话只是个伪管理员,一旦privileged: true,则容器内的root用户和宿主机的root用户拥有一样的权限,在生产中能不给就不给。
volumes:
- "mysql-data:/usr/local/mysql/"
php:
hostname: php
build:
context: /opt/lnmp/php
dockerfile: Dockerfile
ports:
- 9000:9000
ntainer_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
浏览器访问:http://20.0.0.10:1314/wordpress/index.php