赞
踩
目录
Docker Compose是一个用于定义和运行多容器 Docker 应用程序的工具。它允许用户使用 YAML 文件来定义应用程序的配置,包括容器的数量、容器之间的依赖关系、环境变量、端口映射以及其他设置。然后,用户可以使用 docker-compose 命令来启动和管理这些容器。
使用 Docker Compose 可以方便地管理多个容器,例如,可以同时启动一个 Web 服务器容器和一个数据库容器,并在它们之间建立网络连接。Docker Compose 还支持自定义网络,使得容器可以在不同的网络中进行通信。
Docker Compose 文件通常包含一个或多个服务,每个服务都由一个或多个容器组成。服务定义了容器应该执行的任务,以及容器之间的依赖关系。例如,一个 Web 服务器服务可以包含一个或多个 Web 服务器容器,而这些容器又依赖于一个数据库容器。
Dockerfile文件 --> 手动执行 docker build 一个个构建镜像 -> 手动执行 docker run 一个个创建启动容器
总结:
项目project -> 包含一个或多个服务service -> 包含一个或多个容器container的镜像、端口映射、环境变量、依赖关系等启动参数
YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 json 数据描述语言,语法比 json 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来。
使用 YAML 时需要注意下面事项
yaml文件格式:文件名格式通常是以 .yaml .yml 为后缀,用 空格缩进 表示字段的层级关系,特性:可读性高,易于人类管理
json文件格式:文件名格式通常是以 .json 为后缀,用 大括号{} 表示字段的层级关系,每层字段除了最后一个字段都要用逗号,结尾,特性:易于api接口解析
- debug: true #真true,假false,不能用引号引用
-
- debug: false
- value: | # | 代表保留输出文本的换行和回车符,不加的话即使文本换行也会在同一行显示
-
- hello #这种情况就是输出 hello ,不加 | 就是 helloworld!
-
- world! world!
-
- | - #不保留文本块末尾的换行 | + #会保留文本块末尾的换行
- value: > hello #将 > 后的字符串和之后的字符串用空格分开,即 hello world!
-
- world!
- type: &a string #&是打锚点,后面跟的是锚点名称,&a 代表的就是 string
-
- type: *a #*a 代表引用锚点,此处输出结果就是 type: string
-
- types: #此处就是输出 types:
-
- - int - int
-
- - *a - string
-
- - double - double
- 一级字段:
- 二级字段1: #yaml格式用 空格缩进 表示字段的层级关系,同一层字段要靠左对齐
- 二级字段2:
- 三级字段:
- 例如:
- 纵向格式:
- animal:
- - 飞行动物
- - 爬行动物
- - 水生动物
- - 两栖动物
-
- 横向格式
- animal: ["飞行动物", "爬行动物", "水生动物", "两栖动物"]
- #下载
- curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- #安装
- chmod +x /usr/local/bin/docker-compose
- #查看版本
- docker-compose --version
- mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
- cd /opt/compose_nginx/nginx
- cp nginx-1.12.0.tar.gz ./
-
- vim run.sh
- #!/bin/bash
- /usr/local/nginx/sbin/nginx
-
- vim Dockerfile
- #基于基础镜像
- FROM centos:7
- #用户信息
- MAINTAINER this is nginx image <yy>
- #添加环境包
- RUN yum -y update
- RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
- RUN useradd -M -s /sbin/nologin nginx
- #上传nginx软件压缩包,并解压
- ADD nginx-1.12.0.tar.gz /usr/local/src/
- #指定工作目录
- WORKDIR /usr/local/src/nginx-1.12.0
- RUN ./configure \
- --prefix=/usr/local/nginx \
- --user=nginx \
- --group=nginx \
- --with-http_stub_status_module && make && make install
- ENV PATH /usr/local/nginx/sbin:$PATH
- #指定http和https端口
- EXPOSE 80
- EXPOSE 443
- //方法一:
- RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #关闭 nginx 在后台运行
- #添加宿主机中run.sh到容器中
- ADD run.sh /run.sh
- RUN chmod 755 /run.sh
- CMD ["/run.sh"]
- //方法二:
- ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
-
-
- echo "<h1>this is test web</h1>" > /opt/compose_nginx/wwwroot/index.html
- vim /opt/compose_nginx/docker-compose.yml
- version: '3'
- services:
- nginx:
- container_name: web1
- hostname: nginx
- build:
- context: ./nginx
- dockerfile: Dockerfile
- ports:
- - 1216:80
- - 1217:443
- networks:
- lnmp:
- ipv4_address: 172.18.0.10
- volumes:
- - ./wwwroot:/usr/local/nginx/html
- networks:
- lnmp:
- driver: bridge
- ipam:
- config:
- - subnet: 172.18.0.0/16
-
- cd /opt/compose_nginx/
- docker-compose -f docker-compose.yml up -d
- ----------------------------------------------------------------------------------------------------------
- -f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
- -p, --project-name NAME :指定项目名称,默认使用目录名称
- -d :在后台运行
- ----------------------------------------------------------------------------------------------------------
- yum install -y tree
- tree /opt/compose_nginx
- docker ps -a
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- b48dceee248f compose_nginx_nginx "/run.sh" About a minute ago Up About a minute 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1
-
- cd /opt/compose_nginx/
- docker-compose ps #必须在docker-compose.yml所在目录执行此命令
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。