使用新的Ansible容器,只需使用Playbook即可构建Docker镜像
中国最近正在开发一种名为Ansible Container的新工具。使用Ansible Container,您可以仅使用Ansible playbook来构建Docker镜像和容器的编排。换句话说,通过使用它,您可以消除Dockerfile和Bash脚本变得庞大和难以阅读的问题,而且也不需要花时间学习专门为Docker准备的新编排工具。
因为我尝试了官方文件的样例,所以我在下面留下了步骤。
所需之物
-
- Docker Engine
-
- Python 2.7
-
- setuptools 20.0.0+
-
- pip
- git
安装
$ git clone https://github.com/ansible/ansible-container.git
$ cd ansible-container
$ python ./setup.py install
准备 Docker 机器
$ docker-machine create --driver virtualbox node1
$ eval $(docker-machine env node1)
准备项目
## ディレクトリを作る
$ mkdir project1
$ cd project1
## 初期化する
$ ansible-container init
$ tree
.
└── ansible
├── container.yml
├── main.yml
└── requirements.txt
编辑 container.yml 和 main.yml
#
# container.yml
#
version: "1"
services:
web:
image: "ubuntu:trusty"
ports:
- "80:80"
command: ["/usr/bin/dumb-init", "/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
dev_overrides:
environment:
- "DEBUG=1"
#
# main.yml
#
- hosts: all
gather_facts: false
tasks:
- raw: which python || apt-get update
- raw: (which python && which aptitude) || apt-get install -y python python-apt aptitude
- hosts: web
tasks:
- name: Upgrade APT
apt: upgrade=yes
- name: Install ca-certificates
apt: name=ca-certificates state=latest
- name: Install dumb-init
apt: deb=https://github.com/Yelp/dumb-init/releases/download/v1.0.2/dumb-init_1.0.2_amd64.deb
- name: Install Apache
apt: name=apache2 state=latest
尝试使用
## ビルドする
$ ansible-container build
## コンテナを作る
$ ansible-container run
使用网络浏览器打开http://,您可以确认网络服务器已经启动。
据我所知,目前的ansible-container run命令中似乎没有-d选项,因此无法在后台运行。如果您想要在后台运行,可以使用以下的docker run命令来实现。
$ docker run -p 80:80 -dt ansible-container-web /usr/bin/dumb-init /usr/sbin/apache2ctl -D FOREGROUND
如果您使用ansible-container build创建了多个类型的映像(例如创建了web和mysql),我认为您需要在docker-compose.yml中明确设置复合容器的配置,然后执行docker-compose up -d命令来完成操作。
我还没有尝试ansible-container push和ansible-container shipit,但官方文档中有详细的说明,请参考官方文档。
印象
听说Ansible Container的开发刚刚开始,将来将会像docker-compose一样具备类似的子命令,这样会更加易用。