Docker第八篇-docker-compose教程(介绍,安装,入门示例)
文章目录
docker-compose介绍
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
Compose 定位是:定义和运行多个 Docker 容器的应用。
我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定 义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某 项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后 端的数据库服务容器,甚至还包括负载均衡容器等。 Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件 (YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
有了Compose,我们就不需要再一个个组件去写一份Dockerfile,只需要将整体环境同一起来,写在一份docker-compose.yml文件即可
Compose 中有两个重要的概念:
- 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在 dockercompose.yml 文件中定义。
docker-compose安装
docker-compose在github上开源,地址为:https://github.com/docker/compose/releases
compose的yml文件版本和docker版本对应关系如下:
安装docker(已安装最新的请忽略此步骤)
老版本的Docker包叫做docker或者docker-engine,如果安装了老版本的docker得先卸载然后再安装新版本的docker。docker的发展非常迅速,apt源的更新往往比较滞后。所以docker官网推荐的安装方式都是下载docker安装脚本安装。
卸载老旧的版本(若未安装过可省略此步骤):
apt-get remove docker docker-engine docker.io
安装最新的docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
确认安装成功
docker run hello-world
安装的docker版本号如下:
docker-compose安装与卸载
方式一:从github上下载进行安装(常用)
这里请注意docker和docker-compose对应关系
curl -L https://github.com/docker/compose/releases/download/1.23.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#添加可执行权限
chmod +x /usr/local/bin/docker-compose
#查看安装版本
docker-compose version
方式二:使用pip安装
#安装pip
yum -y install epel-release
yum -y install python-pip
#确认版本
pip --version
#更新pip
pip install --upgrade pip
#安装docker-compose
pip install docker-compose
#查看版本
docker-compose version
卸载方式:
#如果是github下载方式安装的,删除二进制文件即可。
rm /usr/local/bin/docker-compose
#如果是通过 pip 安装的,则执行如下命令即可删除。
pip uninstall docker-compose
安装的版本号如下:
docker-compose简单示例
使用docker-compose启动一个nginx
在/home/nginx下新建docker-compose.yml文件,输入如下内容:
version: "3" # 表示该docker-compose.yml文件使用的是Version 3 file format
services: # 为project定义服务
nginx: # 指定服务名称
image: nginx # 指定服务所使用的镜像
ports: # 暴露端口信息
- 80:80
在yml文件所在的当前目录使用docker-compose up启动
也可以使用后台启动命令:docker compose up -d
[[email protected] nginx]# vim docker-compose.yml
[[email protected] nginx]# docker-compose up
Creating network "nginx_default" with the default driver
Pulling nginx (nginx:)...
latest: Pulling from library/nginx
f17d81b4b692: Pull complete
d5c237920c39: Pull complete
a381f92f36de: Pull complete
Creating nginx_nginx_1_5666499f560d ... done
Attaching to nginx_nginx_1_40e5a205acb7
浏览器访问: