在K8S出现之前,市场上有很多个容器编排工具。docker-compose就是其中之一,但是docker-compose只支持单机容器编排。
docker-compose是Docker官方开源的又一个项目,主要负责对Docker容器集群进行快速编排。
在docker-compose中有两个重要的概念:
- service:一个应用的容器,实际上可以包含若干个运行相同镜像的容器。
- project:由一组相关联的应用容器组成的一个完整的业务单元。
由此,docker-compose恰好满足用户通过一个命令,启动整个业务单元中所有的容器的这样一个功能。
而且,docker-compose是通过Python编写的,是想上调用了Docker服务提供的API,来对容器进行管理。因此,只要所操作的平台支持Docker,就可以利用docker-compose来进行管理。
1、安装Docker-compose
安装docker-compose非常的简单,从GitHub上面直接下载下来就能用。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
- 增加docker-compose的命令行补全
curl -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose2、docker-compose的使用
docker-compose管理容器是通过配置清单的方式进行管理。配置清单的名称必须如下:docker-compose.yml, docker-compose.yaml, compose.yml, compose.yaml中选择一个。
[root@kubernetes harbor]# cat docker-compose.yaml
# 指定docker-compose配置清单的版本
version: "3"
services:
mydjango: # 自己具体应用
image: django:v24
[root@kubernetes harbor]# docker-compose up -d
image:指定镜像
build:构建镜像
根据指定路径的dockerfile构建镜像并启动。
# 指定docker-compose配置清单的版本
version: "3"
services:
mydjango:
build: ./
# 指定docker-compose配置清单的版本
version: "3"
services:
mydjango:
build:
context: ./
dockerfile: docker-file
command:指定容器启动的默认命令
# 指定docker-compose配置清单的版本
version: "3"
services:
mydjango:
build:
context: ./
dockerfile: docker-file
command: python manage.py runserver 0.0.0.0:80
container_name:指定容器名称
# 指定docker-compose配置清单的版本
version: "3"
services:
mydjango:
build:
context: ./
dockerfile: docker-file
command: python manage.py runserver 0.0.0.0:80
container_name: test
depens_on:解决容器启动顺序
django + Nginx时,Nginx通常必须在Django容器之后启动。
version: "3"
services:
mydjango:
build:
context: ./
dockerfile: docker-file
command: python manage.py runserver 0.0.0.0:80
container_name: django
mynginx:
image: nginx:v3
depends_on:
- mydjango
port:指定容器端口
version: "3"
services:
mydjango:
build:
context: ./
dockerfile: docker-file
container_name: django
mynginx:
image: nginx:v3
ports:
- "8090:80"
depends_on:
- mydjango
volumes:挂载目录
version: "3"
services:
mydjango:
build:
context: ./
dockerfile: docker-file
container_name: django
mynginx:
image: nginx:v3
ports:
- "8090:80"
volumes:
- /opt:/opt
depends_on:
- mydjango
3、docker-compose常用命令
关于docker-compose操作容器的命令。
up:创建容器并启动
[root@kubernetes django]# docker-compose up -d
down:停止容器
[root@kubernetes django]# docker-compose down
ps:容器列表
[root@kubernetes django]# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------
django uwsgi --ini myweb.ini Up 8000/tcp
django_mynginx_1 /docker-entrypoint.sh /bin ... Up 443/tcp, 0.0.0.0:8090->80/tcp,:::8090->80/tcp
exec:进入容器
[root@kubernetes django]# docker-compose exec mynginx bash
restart:重启容器
[root@kubernetes django]# docker-compose restart
rm:删除容器
[root@kubernetes django]# docker-compose stop mydjango
Stopping django ... done
[root@kubernetes django]# docker-compose rm -f mydjango
Going to remove django
Removing django ... done
top:查看容器内部的进程
[root@kubernetes django]# docker-compose top mynginx
4、docker的可视化平台
version: "3"
services:
portainer:
image: portainer/portainer-ce:2.11.1
volumes:
- /opt/portainer_data:/data
- /var/run/docker.sock:/var/run/docker.sock
container_name: portainer
ports:
- 8000:8000
- 9443:9443
[root@kubernetes linux]# docker-compose up -d
