docker-compose入门基本用法
概况
多个 docker 容器的管理,如果采用手动的方式,是很恶心人,每次都要执行一连串的操作,如此低效肯定无法令人忍受。于是,用于批量管理 docker 容器的工具 docker compose 踏着七彩祥云来了。
Docker compose 只需要通过一个 yml 文件定义,就可以实现对多容器进行管理
docker-compose.yml 配置文件的三大概念
- Services
- Networks
- Volumes
配置文件需要申明版本,现在统一都是版本 3
一个 service 代表一个 container, 这个 container 可以从 dockerhub 的 image 来创建,或者从本地的 Dockerfile build 出来的 image 来创建
Service 的启动类似 docker run, 可以指定 network 和 volume
services:
db:
image: postgres:9.4
volumes:
- "db-data:/var/lib/postgresql/data"
networks:
- back-tier
等同于:
$ docker volume create db-data
$ docker network create -d bridge back-tier
$ docker run -d --network back-tier -v db-data:/var/lib/postgresql/data postgres:9.4
另一种指定方式:
services:
worker:
build: ./worker
links:
- db
- redis
networks:
- back-tier
安装
mac 的安装包已经默认安装了 docker-compose
$ docker-compose --version
docker-compose version 1.24.1, build 4667896b
Linux 的安装参见 文档
常用命令
以构建 wordpress 为例 配置源码
- docker-compose up 启动,默认读取当前目录下的
docker-compose.yml
文件,加-d
设置为后台运行
$ docker-compose up -d
Starting wordpress_mysql_1 ... done
Starting wordpress_wordpress_1 ... done
-
docker-compose stop 停止
-
docker-compose start 开启
-
docker-compose down 停止并删除相应的容器、网络等
-
docker-compose ps 查看状态
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------
wordpress_mysql_1 docker-entrypoint.sh mysqld Exit 0
wordpress_wordpress_1 docker-entrypoint.sh apach ... Exit 0
- docker-compose exec 进入容器
$ docker-compose exec wordpress bash
root@c4afd7ff4186:/var/www/html# exit
- docker-compose images 列出镜像
$ docker-compose images
Container Repository Tag Image Id Size
-------------------------------------------------------------------
wordpress_mysql_1 mysql 5.7 e1e1680ac726 356 MB
wordpress_wordpress_1 wordpress latest 7dcb194f4a6b 478 MB
docker-compose 通过本地 Dockerfile
构建镜像
执行后的效果:
重新构建
修改配置文件后,要执行以下步骤
$ docker-compose down
$ docker-compose build
$ docker-compose up
转载必须注明出处:https://www.zhiqiexing.com/155.html