docker compose入门

注意
Dockerfile是用来构建镜像;
docker-compose是用来运行容器;

https://blog.csdn.net/pushiqiang/article/details/78682323


例子

创建docker-compose.yml

version: '3'
   
services:
  ppp-redis:   #这个名称随意,一般是 项目名称-服务名
    image: redis:5.0.9
    container_name: redis
    networks: 
        - ppp  #使用下面创建的网络ppp
    restart: always
    volumes:
        - /opt/data:/var/lib/mysql
    ports:    
      - "6378:6379"
    tty: true

networks:
  ppp:
 #使用外部网络
    external: true

使用

docker-compose up -d <servicename>

一个docker-compose文件里面可以有多个service,可以指定某个service,不指定则默认运行全部service

常用标签


version

指定 compose 文件的版本

compose文件格式版本docker版本
3.417.09.0+
3.317.06.0+
3.217.04.0+
3.11.13.1+
3.01.13.0+
2.317.06.0+
2.21.13.0+
2.11.12.0+
2.01.10.0+
1.01.9.1.+

services

一个service代表一个container(这个container可以从docker hub上拉取的image创建也可以用Dockerfile build出来的image创建)

services的下级名称随意,一般是 项目名称-服务名


image

指定以哪个镜像启动容器;


build

除了可以基于指定的镜像,还可以基于一份 Dockerfile来构建服务
build指向一个保存了docker-compose.yml文件的目录

# . 表示dockerfile在当前目录下;
build: .
注意

build如果和image一起使用,那么Compose 会构建镜像并且把镜像命名为 image 后面的那个名字;

那么Dockerfile构建的镜像将会被命名为myredis
build: .
image: myredis

VOLUME

用法跟docker run 的-v一样,同时指定宿主机目录和容器目录

 volumes:
        - /opt/data:/var/lib/mysql
        左边宿主机:右边容器

VOLUME命令(docker -v)注意事项

  1. 容器目录不可以为相对路径
  2. 宿主机目录如果不存在,则会自动生成
  3. 如果宿主机目录为相对路径,则对应的目录在宿主机/var/lib/docker/volumes/下
    • 例如 docker run -it -v -v test1:/soft centos /bin/bash,则容器内的/soft目录挂载的是宿主机上的/var/lib/docker/volumes/test1/_data目录
  4. 如果volume(或者docker -v)命令只指定一个路径,那么这个路径是容器路径且挂载到 宿主机/var/lib/docker/volumes/容器id/_data目录
    • 例如 docker run -it -v /test2 centos /bin/bash 将会把容器/test2目录挂在到宿主机/var/lib/docker/volumes/96256232eb74edb139d652746f0fe426e57fbacdf73376963e3acdb411b3d73a/_data目录 ,中间的一长串是容器完整id

restart: always

当 Docker 重启时,容器自动启动。当容器自动关闭时也能自动启动;


container_name

指定 容器的名字

command

command:覆盖容器启动后默认执行的命令

command: bundle exec thin -p 3000
或
command: [bundle,exec,thin,-p,3000]

environment

添加环境变量。同docker run -e。可以是数组或者字典格式
例如 docker-mysql时 docker run需要使用-e指定数据库密码

environment:
       MYSQL_ROOT_PASSWORD: "password"

docker-compose中配置网络

docker-compose中创建并使用网络

version: '3'
   
services:
  myredis:
    ...

    #使用下面定义的mynet
    networks: 
        - mynet
 ...

#创建网络,这里的networks和上面的services平级
networks:
  mynet: 
    driver: bridge  #指定网络类型
# 假如是在myApp目录下运行的docker-compose up命令,那么这个网络的名字就是myApp_mynet

--- 

docker-compose中使用外部用网络

先创建网络mynet

version: '3'
   
services:
  ppp-redis:
    ...
    networks: 
        - mynet
    ...


networks:
  mynet:
 #申明使用外部网络
    external: true

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值