docker-compose常⽤命令及yml⽂件编写
⼀、docker-compose安装
该篇⽂章最后有docker-compose的安装教程。
docker-compose是⼀款单机多容器编排⼯具,在正常使⽤docker的时候会使⽤很多命令,在输⼊这些命令的时候容易出错,⽽且不便记录执⾏了哪些命令,如果需要在其他的服务器上也部署同样的⼀份容器的话⼜要将这些命令执⾏⼀遍,服务器过多⼯作量也不⼩;这时使⽤docker-compose单机部署多容器就⾮常适⽤了。
⼆、docker-compose常⽤命令
docker-compose up 创建并启动容器
docker-compose up -d 以后台形式创建并启动容器
docker-compose -f yml⽂件 up 指定创建并启动容器使⽤的yml⽂件
docker-compose ps:查看通过docker-compose创建的容器,如果是docker run启动的容器不会显⽰,通过docker ps可以查看通过docker run和docker-compose启动的容器
docker-compose images:查看通过docker-compose得到的image,通过其他⽅式得到的image不会显⽰,通过docker images可以查看docker pull、docker run、docker-compose、docker build、docker commit得到的image
docker-compose stop/start 停⽌/启动l⽂件中定义的容器
docker-compose down 停⽌并删除l⽂件中定义的容器及删除l⽂件中定义的network,但是定义的volume不会删除。
docker-compose l⽂件中定义的容器名称 查看某个容器的⽇志
其他命令及参数可以通过docker-compose help查看
注意:
注意:
1、docker-compose的命令需要在有l⽂件的⽬录才可以执⾏,否则使⽤docker-compose的命令会报错;并且只有该yml⽂件执⾏了up操作即创建了该l定义的容器之后才可以看到对应的容器。
⽐如执⾏docker-compose ps查看通过docker-compose运⾏了哪些容器:
在没有l⽂件的⽬录执⾏docker-compose的命令会报错,只有切换到有l⽂件的⽬录⽅能正常执⾏docker-compose命令。
2、docker-compose命令,在哪个⽬录下执⾏,那么就是对于该⽬录下的l⽂件的操作,⽐如docker-compose up 就是使⽤当前⽬录的l⽂件创建启动容器,docker-compose ps那么就是查看当前⽬录l⽂件定义的容器(前提是执⾏了up操作才能看到定义的这些容器)。
分别在docker1和docker两个⽬录执⾏相同的命令,查看到的结果不相同。
三、docker-compose yml⽂件编写
version:指定版本
services:该指令下⾯写该yml⽂件中需要定义的container信息,其中services的下⾯第⼀级指令就是指定的该容器的名称
如:
services: #定义container
mysql: #container名称为mysql
image: "mysql:5.7" #image来源
image:指定该容器使⽤的image,和build⼆选⼀
build:指定该容器使⽤的image通过哪个⽬录下的Dockerfile⽂件进⾏构建,. 表⽰当前⽬录的Dockerfile⽂件,和image⼆选⼀
ports:指定宿主机和容器的端⼝映射关系,可指定多个
networks:指定使⽤的⽹络信息,可指定多个
ipv4_address:和networks配合使⽤,指定容器在该⽹络中的ip信息
volumes:指定数据挂载信息,可以指定⽬录或⽂件的映射,也可以指定数据挂载记录和容器中⽬录的映射(这种⼀般指定的容器中⽬录是该容器Dockerfile⽂件中VOLUME指令指定的⽬录),如果指定数据挂载记录的映射需要通过volumes定义数据挂载记录,可指定多个environment:指定容器可选参数的值信息
networks:定义⽹络信息,相当于docker network create 命令,其中networks的下⾯第⼀级指令就是指定⽹络的名称,可以配合subnet指定⽹段信息
volumes:定义数据挂载记录,相当于docker volume create 命令
如:
volumes: #定义volume-相当于 docker volume create mysql
mysql: {}
或
volumes: #定义volume-相当于 docker volume create mysql
mysql:
例如:
version: "3" #docker-compose版本
services: #定义container
mysql: #container名称
image: "mysql:5.7" #image来源
ports:
- "3306:3306"
networks:
springboot:
ipv4_address: 172.20.0.2
volumes:
- mysql:/var/lib/mysql #设置持久化映射关系,其中mysql是下⾯volumes中定义的名称为mysql的数据挂载记录名称
environment:
MYSQL_ROOT_PASSWORD: root@123456Y #设置root账号密码
sb01: #container名称-相当于--name web
build: . #image来源,build . 表⽰使⽤当前⽬录的Dockerfile⽂件进⾏构建image
ports: #指定端⼝映射
- "9001:9989" #端⼝映射关系和ports⼀起相当于-p 9001:9989
networks: #指定network-相当于--network springboot
springboot:
ipv4_address: 172.20.0.6 #指定容器ip地址-相当于--ip 172.20.0.6
sb02: #container名称-相当于--name web
build: . #image来源,build . 表⽰使⽤当前⽬录的Dockerfile⽂件进⾏构建image
ports: #指定端⼝映射
- "9002:9989" #端⼝映射关系和ports⼀起相当于-p 9002:9989
networks: #指定network-相当于--network springboot
springboot:
ipv4_address: 172.20.0.7
sb03: #container名称-相当于--name web
build: . #image来源,build . 表⽰使⽤当前⽬录的Dockerfile⽂件进⾏构建image
ports: #指定端⼝映射
- "9003:9989" #端⼝映射关系和ports⼀起相当于-p 9003:9989
networks: #指定network-相当于--network springboot
springboot:
ipv4_address: 172.20.0.8
nginx: #container名称-相当于--name web
image: nginx #image来源,build . 表⽰使⽤当前⽬录的Dockerfile⽂件进⾏构建image
ports: #指定端⼝映射
- "80:80" #端⼝映射关系和ports⼀起相当于-p 80:80
networks: #指定network-相当于--network springboot
springboot:
ipv4_address: 172.20.0.3
volumes:
- "/usr/f:/etc/f" #指定nginx使⽤的配置⽂件
networks: #定义network-相当于 docker network create --subnet=172.20.0.0/24 springboot 该命令创建的network默认也是桥接模式 springboot: #network名称
driver: bridge #定义network类型为桥接模式
ipam:
driver: default
config:
nginx停止命令- subnet: 172.20.0.0/24 #指定⽹段信息
volumes: #定义volume-相当于 docker volume create mysql
mysql: {}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论