Docker compose
compose简介
compose 是一个可定义和运行多个容器的docker容器应用管理工具,使用compose,你可以通过编写YAML文件配置你的应用程序或者服务,你可以创建并运行你的配置,尤其是在同一宿主主机下面,要运行多个容器,compose是一个不错的管理工具。
compose的使用一般包括三个步骤
1.使用Dockerfile定义你的应用运行的环境,让它可以在任何地方运行
2.在docker-compose.yml文件中定义组成你需要运行的服务的环境,
3.运行docker-compose up来启动你的服务
以下实验环境均在Centos操作系统上完成
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)
1.compose的安装
curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
安装之后直接执行会报错,如下:
[root@localhost ~]# /usr/local/bin/docker-compose -bash: /usr/local/bin/docker-compose: Permission denied
原因是没有执行权限,赋执行权限即可
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose 、
2.compose选项
build Build or rebuild services
bundle Generate a Docker bundle from the Compose file
config Validate and view the compose file
create Create services
down Stop and remove containers, networks, images, and volumes
events Receive real time events from containers
exec Execute a command in a running container
help Get help on a command
kill Kill containers
logs View output from containers
pause Pause services
port Print the public port for a port binding
ps List containers
pull Pull service images
push Push service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
unpause Unpause services
up Create and start containers
version Show the Docker-Compose version information
3.docker-compose.yml文件格式详解
一份标准的docker-compose.yml文件应该包含version,services以及networks三个部分,其中最重要的是services和netwotks两个部分
以下是一份标准的docker-compose.yml配置文件
version: '2'
services:
App1:
image: nginx
ports:
- "8080:80"
networks:
- "netName1"
volumes:
- /opt/conf/:/mnt
App2:
image: nginx
ports:
- "8081:80"
networks:
- "netName1"
volumes:
- /opt/conf/:/mnt
App3:
image: nginx
ports:
- "8082:80"
networks:
- "netName2"
networks:
netName1:
driver: bridge
netName2:
driver: bridge
-- image
其中第一行是version
第二行services标签就是定义服务,在services标签下的第一个标签就是定义服务的名称,image则是指定服务的镜像名称或者镜像ID,如果这个镜像不存在,docker会尝试去自动拉取这个镜像
-- build
服务除了基于指定的镜像,还可以基于一份Dockerfile,在使用

浙公网安备 33010602011771号