容器编排 Docker Compose(2)

networks: 指定所要加入的网络。
IPV4_ADDRESS:指定加入这个网络的IP地址。
12345 services:
  some-service:
    networks:
    - some-network
    - other-network

services:
  app:
    image: busybox
    command: ifconfig
    networks:
      app_net:
        ipv4_address: 172.16.238.10
        ipv6_address: 2001:3984:3989::10
networks:
  app_net:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
      -
        subnet: 172.16.238.0/24
      -
        subnet: 2001:3984:3989::/64

ports: 对外开放的端口。
短语法模式:

ports:
 - "3000"
 - "3000-3005"
 - "8000:8000"
 - "9090-9091:8080-8081"
 - "49100:22"
 - "127.0.0.1:8001:8001"
 - "127.0.0.1:5000-5010:5000-5010"
 - "6060:6060/udp"

长语法模式(版本v3.2):
target:容器内部端口
published:对外暴露的端口
protocol:协议类型
mode:  host 用于在每个节点上发布主机端口的主机,或将要进行负载均衡的群模式端口的入口。
 ports:
  - target: 80
    published: 8080
    protocol: tcp
    mode: host

vlumes: 挂载宿主机目录,或命名卷。
短语法:
volumes:
  # Just specify a path and let the Engine create a volume
  - /var/lib/MySQL
  # Specify an absolute path mapping
  - /opt/data:/var/lib/mysql
  # Path on the host, relative to the Compose file
  - ./cache:/tmp/cache
  # User-relative path
  - ~/configs:/etc/configs/:ro
  # Named volume
  - datavolume:/var/lib/mysql

长语法(v3.2):

volumes:
  - type: volume
    source: mydata
    target: /data
    volume:
      nocopy: true
  - type: bind
    source: ./static
    target: /opt/app/static

restart: 定义自启动。
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

domainname, hostname, ipc, mac_address, privileged, read_only, shm_size, stdin_open, tty, user, working_dir: 指定属性。 与使用docker run 指定参数功能一样。
1234567891011 user: postgresql
working_dir: /code
domainname: foo.com
hostname: foo
ipc: host
mac_address: 02:42:ac:11:65:43
privileged: true
read_only: true
shm_size: 64M
stdin_open: true
tty: true

使用compose制作nginx-web容器
这里用一个简单的示例说明docker-compose file的用法。
安装好docker以及docker-compose,从官方下载CentOS镜像:
docker pull centos

1、选择一个构建目录,创建Dockerfile:
mkdir web
cd web
mkdir log      # 用于挂载容器的日志目录
vim Dockerfile

Dockerfile 内容:
FROM centos
MAINTAINER trying tryingstuff@163.com
RUN rpm -ivh
RUN yum install nginx -y
RUN sed -i 'N;6adaemon off;' /etc/nginx/nginx.conf
ADD index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx"]

修改默认的nginx.conf配置为daemon off,具体的原因可参考之前的Docker 构建镜像
添加index.html文件:
echo "this is Compose test!" > index.html

2、创建docker-compose.yml
vim docker-compose.yml

version: '2'
services:
  web-nginx:
    build: .
    image: trying/nginx-com:v1 
    ports:
    - "80:80"
    volumes:
    - ./log:/var/log/nginx
    container_name: web-compose
    command: ["nginx"]

文件说明:
a. 指定compose版本为v2,建议使用v2 或v3版本,如果不指定,默认会使用v1版本,语法会不兼容。
b. web-nginx定义了服务的名称,如果没有后面image参数指定,镜像名称会默认以 当前路径_服务名 命名如(web_web-nginx)。
c. build: . 表示构建路径为当前路径。
d. image 指定了构建之后的镜像名称,如果没有build行为,则表示当前镜像库中已有的镜像。
e. ports 表示映射端口 宿主机端口:容器端口
f. volumes表示容器挂载的宿主机目录。

3、在当前目录运行docker-compose命令, 如果不使用-d 选项,compose运行之后会一直驻留在前台,终止compose后容器也会停止。

docker-compose up -d

4、构建完成后,查看镜像:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/507b5bd52a0adf7fc021b41216ae8216.html