Docker-Compose

发布时间:2024年01月16日

目录

一 什么是Docker-Compose

二?Docker-Compose.yml配置文件详解

1.Docker-Compose管理的容器

2.?YAML 文件格式及编写注意事项?

3.数据结构?

4.Docker Compose配置常用字段

三 Docker Compose 常用命令及文件结构

1.Docker Compose 常用命令

2. Docker Compose 文件结构

(1)准备依赖文件

?(2)编辑配置文件docker-compose.yml

(3)测试


一 什么是Docker-Compose

我们知道使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排,而docker-compose是用来单机上编排容器(定义和运行多个容器,使容器能互通)。

ps:前端和后端部署在一台机器上,现在直接通过编写docker-compose文件对多个服务(可定义依赖,按顺序启动服务)同时进行启动/停止/更新。


二?Docker-Compose.yml配置文件详解

1.Docker-Compose管理的容器

docker-compose.yml组成一个project,project里包括多个service,每个service定义了容器运行的镜像(或构建镜像),网络端口,文件挂载,参数,依赖等,每个service可包括同一个镜像的多个容器实例。

?即 project 包含 service ,service 包含 container 。

2.?YAML 文件格式及编写注意事项?

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 XML数据描述语言,语法比 XML 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来。

使用 YAML 时需要注意下面事项:
●大小写敏感
●通过缩进表示层级关系
●不支持制表符 tab 键缩进,只能使用空格缩进
●缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
●用 # 号注释
●符号字符后缩进1个空格,如冒号 : ?、逗号 , ?、横杠 - ? ?
●如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思。

3.数据结构?

●对象映射: 键值对的字典
animal: pets

●序列数组: 一组按次序排列的列表
- Cat
- Dog
- Goldfish

["Cat", "Dog", "Goldfish"]

●布尔值
debug: true
debug: false


4.Docker Compose配置常用字段

字段????????????????????????????????????????描述
build指定Dockerfile 文件名,要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定。

dockerfile

构建镜像上下文路径。

context可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址。
image

指定镜像。

command执行命令,覆盖容器启动后默认执行的命令。
container_name?指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量。
deploy指定部署和运行服务相关配置,只能在 Swarm 模式使用。
environment?添加环境变量。
networks加入网络。

network_mode

设置容器的网络模式,如 host,bridge,...

ports

暴露容器端口,与 -p 相同,但端口不能低于 60。

volumes

挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称。

volumes_from

从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 '2' 支持。

hostname

容器主机名。

sysctls

在容器内设置内核参数。

links

连接到另外一个容器,- 服务名称[:服务别名]。

privileged

用来给容器root权限,注意是不安全的,true | false。

restart

设置重启策略。

open

指定容器启动时要打开的文件、目录或网址。

depends_on

控制容器启动顺序和依赖关系。

三 Docker Compose 常用命令及文件结构

1.Docker Compose 常用命令

字段????????????????????????????????????????描述

build

重新构建服务。

ps列出容器。
up创建和启动容器。
exec在容器里执行命令。
scale指定一个服务容器启动数量。
top显示容器进程。
logs查看容器输出。
down删除容器、网络、数据卷和镜像。
stop/start/restart停止/启动/重启服务。

2. Docker Compose 文件结构

(1)准备依赖文件
mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
cd /opt/compose_nginx/nginx
cp nginx-1.12.0.tar.gz ./

#编辑run.sh文件

#!/bin/bash
/usr/local/nginx/sbin/nginx

#编辑Dockerfile文件

vim Dockerfile
FROM centos:7
MAINTAINER this is nginx image <hmj>
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin 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
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf	
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
?(2)编辑配置文件docker-compose.yml
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: 192.168.27.30
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  lnmp:
   driver: bridge
   ipam:
     config:
	   - subnet: 192.168.27.0/16

-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行

(3)测试
docker ps -a
cd /opt/compose_nginx/
docker-compose ps        #必须在docker-compose.yml所在目录执行此命令

?浏览器访问:http://192.168.27.30:1216

文章来源:https://blog.csdn.net/qq_64441401/article/details/135600615
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。