compose是用来在docker中定义和运行复杂应用的常用工具,它通过在一个yml文件中定义多个容器的配置参数,只用一行命令就可以让容器环境运行就绪。 compose实际上就是以前的docker第三方工具fig,docke公司14年收购了fig团队之后并将其改名为docker-compose。
- docker本身有着很多命令行选项,难记难用。而且重新部署容器时,需要重新输入一遍命令,自动化程度低,容器配置难以维护。 compose通过一个docker-compose.yml文件来描述复杂的容器启动命令和相联的多容器环境。需要重新部署窗口环境时,只需执行两个步骤:
- 安装docker和docker-compose
- 获取yml描述文件,在文件所在目录执行命令docker-compose up
- compose带来的另外一个好处就是配置文档化管理,可以将带有容器运行参数yml文件放进代码库做版本管理。
- 首先需要将docker升级到1.3以上的版本,升级方法如下:
sudo apt-get install apt-transport-https #添加 https 支持
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get -y install lxc-docker
sudo docker version
* 安装docker-compose
sudo apt-get install docker-compose
1> 开启一个容器: 容器名为hello,镜像为ubuntu,默认开启bash命令
$mkdir hello-world
$cd hello-world
$vim docker-compose.yml
hello:
image: "ubuntu"
entrypoint: "/bin/bash"
tty: true
$ `sudo docker-compose up` # <== 开启容器
Creating compose_hello_1
Attaching to compose_hello_1
$ `sudo docker-compose stop` # <== 关闭容器
$ `sudo docker-compose rm` # <== 删除容器
2> 映射网络端口
$vim docker-compose.yml
web:
image: "ubuntu"
3> 创建多个互联的容器
4> 宿主机重启之后容器自启动
在第二节中的docker-compose up,这两个容器都是在前台运行的。我们可以指定-d命令以daemon的方式启动容器。除此之外,docker-compose还支持下面参数:
--verbose:输出详细信息
-f 制定一个非docker-compose.yml命名的yaml文件
-p 设置一个项目名称(默认是directory名)
docker-compose的动作包括:
build:构建服务
kill -s SIGINT:给服务发送特定的信号。
logs:输出日志
port:输出绑定的端口
ps:输出运行的容器
pull:pull服务的image
rm:删除停止的容器
run: 运行某个服务,例如docker-compose run web python manage.py shell
start:运行某个服务中存在的容器。
stop:停止某个服务中存在的容器。
up:create + run + attach容器到服务。
scale:设置服务运行的容器数量。例如:docker-compose scale web=2 worker=3
-
shipYard
-
DockerUI
-
容器监控
- Docker子命令: stats
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
289df03aaf6c 0.00% 13.43 MiB / 7.8 GiB 0.17% 12.8 MB / 244.6 MB 13.58 MB / 0 B 0
ff8896a322cb 0.00% 638.8 MiB / 7.8 GiB 8.00% 1.944 kB / 0 B 82.14 GB / 147.5 kB 0
0ff4cbc1d45e 0.83% 1.013 GiB / 7.8 GiB 12.99% 86.19 MB / 129.5 MB 272.9 MB / 37.7 MB 0
91880f92867f 0.13% 207.2 MiB / 7.8 GiB 2.59% 116.4 MB / 75.06 MB 52.3 MB / 13.8 MB 0
7cf25681c672 4.28% 2.378 GiB / 7.8 GiB 30.49% 12.84 kB / 6.81 kB 493.3 MB / 119.5 GB 0
0e3488d34e41 0.00% 7.727 MiB / 7.8 GiB 0.10% 937.4 kB / 882.9 kB 5.329 MB / 0 B 0
b610d8aa29ea 0.00% 8.016 MiB / 7.8 GiB 0.10% 1.808 MB / 1.735 MB 34.74 MB / 0 B 0
26e8d38de8d3 0.06% 14.27 MiB / 7.8 GiB 0.18% 1.811 MB / 1.822 MB 32.71 MB / 3.51 MB 0
30981536ffe4 0.06% 103.3 MiB / 7.8 GiB 1.29% 53.02 kB / 38.23 kB 45.4 MB / 1.311 MB 0
31c077e2ddfa 103.86% 760.1 MiB / 7.8 GiB 9.52% 39.91 kB / 207.1 kB 166.5 MB / 1.256 GB 0
- TestData
- Nagios or Zabbix
* 如何退出容器之后继续保持容器继续运行
* 容器已启动,如何动态添加端口与盘卷?
-
盘卷空间不足的解决办法? 默认只配置10G的空间。
-
docker映像下载太慢,加 银雀云与DaoCloud的国内image镜像。
-
进入docker容器内,无法使用apt-get或者yum等工具安装常用软件。
-
以ubuntu为例
-
近期(2017年1月)Aliyun的软件镜像不太稳定,建议使用ubuntu.cn
- 如果监控docker容器的资源消耗情况?