docker-compose使用简介
-
docker-compose项目是Docker官方的开源项目,可以对单机上的容器 进行快速编排
- 可以批量管理多个容器的单机编排工具
-
docker-compose将所管理的容器分为三层
- project:工程,默认当前目录名。
- service:服务,通过服务名称管理容器。
- container:容器
-
docker-compose有两个大的版本
- V1 python
- V2 golang
-
可以解决容器之间的依赖关系,
- 比如启动一个nginx前端服务的时候会调用后端的tomcat,那就得先启动tomcat,但是启动tomcat容器 还需要依赖数据库,那就还得先启动数据库
- docker-compose就可以解决这样的嵌套依赖关系,其完全可以替代docker run对容器进行创建、启动和停止。
解决的问题:
单机场景 单机场景 当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且重复的操作容易出错
docker-compose安装
目前有v1和v2两个版本,v1使用python开发、v2是后出的基于go开发的版本、有些命令与v1不兼容,目前主要是使用的v1版本,
### ubuntu apt:
root@docker-server1:~# apt install docker-compose
### centos 7.x yum:
[root@centos7 ~]# yum install epel-release
[root@centos7 ~]# yum install docker-compose
### pip:
root@docker-server1:~# apt install python3-pip
root@docker-server1:~# pip3 install docker-compose
### 二进制:
root@docker-server2:~# wget https://github.com/docker/compose/releases/download/1.xy.z/docker-compose-Linux-x86_64 root@docker-server2:~# cp docker-compose-Linux-x86_64 /usr/bin/docker-compose
root@docker-server2:~# chmod a+x /usr/bin/docker-compose
root@docker-server2:~# docker-compose version
docker-compose version 1.29.2, build 5becea4c
docker-compose.yml 示例文件
version: '3.6' #版本号,https://docs.docker.com/compose/compose-file/compose-versioning/
#定义服务
services:
#当前容器的服务名
nginx-server:
#镜像名称
image: nginx:1.22.0-alpine
#容器名称
container_name: nginx-web1
#声明端口映射
expose:
- 80
- 443
#定义端口映射
ports:
- "80:80"
- "443:443"
docker-compose命令介绍
默认找当前路径的 docker-compose.yml文件
[root@hybrid01 ~]# docker-compose --help
Define and run multi-container applications with Docker.
Usage:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name (default: directory name)
--verbose Show more output
--no-ansi Do not print ANSI control characters
-v, --version Print version and exit
-H, --host HOST Daemon socket to connect to
--tls Use TLS; implied by --tlsverify
--tlscacert CA_PATH Trust certs signed only by this CA
--tlscert CLIENT_CERT_PATH Path to TLS certificate file
--tlskey TLS_KEY_PATH Path to TLS key file
--tlsverify Use TLS and verify the remote
--skip-hostname-check Don't check the daemon's hostname against the name specified
in the client certificate (for example if your docker host
is an IP address)
--project-directory PATH Specify an alternate working directory
(default: the path of the Compose file)
Commands:
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
images List images
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
top Display the running processes
unpause Unpause services
up Create and start containers
version Show the Docker-Compose version information
默认找 docker-compose.yml文件 env_file 是一个key value 的文件 用于传递环境变量 profile打标签 对容器进行筛选
命令选项,需要在docker-compose.yml文件目录执行,带#的不常用
- #build #构建或重新构建服务、在修改Dockerfile后,可以通过docker-compose build重新构建镜像并重建服务
- #bundle #从当前docker compose文件生成一个以当前目录为名称的从Compose文件生成一个分布式应用程序捆绑包(DAB)、已废弃
- config -q #验证docker-compose.yml文件,没有错误不输出任何信息
- #create #创建服务,但是容器不启动
- down #停止并删除资源,默认会删除容器和网络
- #events #从容器接收实时事件,可以指定json日志格式,如
# docker-compose events --json
- #exec #基于service进入指定容器执行命令
# docker-compose ps --services
# docker exec -it nginx-web1 sh
- help #显示帮助细信息
- images #列出本地镜像
- kill #强制终止运行中的容器
# docker-compose kill -s SIGKILL nginx-server #SIG是信号名的通用前缀,KILL是指让一个进程立即终止的动作,合并起来SIGKILL就是发送 给一个进程使进程立即终止的信号。
- logs #基于service查看容器的日志
# docker-compose logs --tail="10" -f nginx-server
- #pause #暂停服务
# docker-compose ps --service
# docker-compose pause nginx-server
#port #基于service查看容器的端口绑定信息
# docker-compose port --protocol=tcp nginx-server 80
- ps #列出容器信息
- pull #拉取镜像
- #push #上传镜像
- #restart #重启服务
- rm #删除已经停止的服务
- #run #一次性运行容器,等于docker run --rm
- scale #设置指定服务运行的容器个数
- # docker-compose scale nginx-server=2 #动态伸缩每个service的副本数,不能指定容器名和端口映射
- start #启动服务
# docker-compose start nginx-server
- stop #停止服务
# docker-compose stop nginx-server
- top #显示容器运行状态
# docker-compose top
- unpause #取消暂定状态中的server
# docker-compose unpause nginx-server
- up #创建并启动容器,通常配合-d参数在后台运行容器
# docker-compose up -d
- version #显示docker-compose版本信息