docker-compose.yml编写
#使用指定的docker-compose文件启动,如不指定则使用docker-compose.yml文件
docker-compose -f docker-compose-n01.yml up -d # -d表示后台启动,不加-d前台启动
version: '3' services: web_nginx: build: #使用某个dockerfile启动容器 context: . dockerfile: dockerfile-nginx01 depends_on: #设置依赖 - app_alpine ports: - 80:80 app_alpine: image: alpine01:latest container_name: alpine04 environment: #设置容器启动时的环境变量 - RACK=idc01 - SHOW=true extra_hosts: #设置容器的/etc/hosts解析 - "host01:192.168.3.3" volumes: - /data10 #docker自动创建卷 - /data1/software:/data11 #从宿主机挂载目录 #tty: true #alpine镜像需要使用其驻留进程,否则会自动退出 command: /bin/sh -c "while true;do sleep 3600;done" #指定容器启动运行的命令
version: '3'
services:
wad_redis:
image: redis:latest
ports: ###将端口映射到宿主
- "6379:6379"
restart: always
networks: ####使用已创建的网络bridge_internet,并指定IP
bridge_internet:
ipv4_address: 172.18.0.11
networks: ###此处要先声明已有的网络bridge_internet
bridge_internet:
external: true
指定使用默认网络:
#前面无需指定networks,使用已存在的网络watchad-master_default
networks:
default:
external:
name: watchad-master_default
默认桥接网络上的容器间使用容器名称无法ping通,自定义的桥接网络上的容器间的 容器名称(container_name) 可以ping通,hostname不能ping通
使用host网络:
watchad_logstash: image: logstash:6.4.1 ports: - "5044:5044" environment: XPACK_MONITORING_ENABLED: "false" pipeline.batch.size: 10 volumes: - ./settings/logstash/:/usr/share/logstash/pipeline/ network_mode: "host" restart: always
volumes用法:
ersion: '3'
services:
test_alpine01:
image: alpine:latest
container_name: alpine10
volumes:
- type: volume #使用docker管理的volume
source: mydata01
target: /data01
volume:
nocopy: true
- type: bind #将宿主绝对路径映射到容器内部
source: ./curr_mydata02
target: /data02
networks:
- bridge_internet
test_alpine02:
image: alpine:latest
container_name: alpine11
volumes:
- "alpine_v02:/my_v02"
- "/home/d03/index.htm:/var/my/index.htm"
networks:
- bridge_internet
networks:
bridge_internet:
external: true
volumes:
mydata01:
alpine_v02: #不需要已存在,docker会自动创建
volumes_from用法:
volumes_from:
- service_name
- service_name:ro
- container:container_name
- container:container_name:rw
参考:https://www.jianshu.com/p/2217cfed29d7
build用法:
version: '2'
services:
frontend:
build: ./frontend ####指定Dockerfile所在目录
dockerfile: dockerfile01 #如果不指定,默认使用Dockerfile文件
ports:
- "80:80"
server:
build: ./server ####指定Dockerfile所在目录
ports: - "5000:5000" network_mode: "host"
entrypoint.sh文件位置:/usr/local/bin/docker-entrypoint.sh
docker-compose 参数参考:
https://www.cnblogs.com/yyxianren/p/10894708.html
https://blog.csdn.net/chenfeidi1/article/details/80866841
#使用指定的docker-compose文件启动,如不指定则使用docker-compose.yml文件
docker-compose -f docker-compose-n01.yml up -d # -d表示后台启动
#查看docker-compose-n01.yml配置文件下运行的所有容器
docker-compose -f docker-compose-n01.yml ps
#查看docker-compose-n01.yml配置文件下运行的容器服务web_nginx(yml文件中定义的service)
docker-compose -f docker-compose-n01.yml ps web_nginx
#让docker-compose-n01.yml配置文件下容器服务web_nginx运行命令“hostname”
docker-compose -f docker-compose-n01.yml run web_nginx hostname