一、按照 docker-ce,具体方法百度 docke 的官方文档
二、 拉取 image,启动 container
-
取得冻仁事先建立好的 Docker image。
$ docker pull chusiang/ansible-managed-node:ubuntu-14.04 #### 使用者帐户 ##################### # # | | username | password | # |-----------|----------|----------| # | root user | root | root | # | sudo user | docker | docker |
chusiang/ansible-managed-node:ubuntu-14.04 镜像的 Dockerfile,点我查看,里面已预载了 OpenSSH server 和 Python。
-
建立并执行容器。
$ docker run --name server1 -d -P chusiang/ansible-managed-node:ubuntu-14.04 ecdf39055ba2a932fa8c76a75afdec1cd8f516285bee6f4e07c16c67f4009211
-
观看容器状态和 SSH 绑定的埠口 (Port)。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecdf39055ba2 chusiang/ansible-managed-node:ubuntu-14.04 "/usr/sbin/sshd -D" 20 hours ago Up 17 seconds 0.0.0.0:32805->22/tcp server1
-
进入容器。
$ docker exec -it server1 bash
-
关闭容器。
$ docker stop server1
-
启用容器。
$ docker start server1
-
移除容器。
$ docker rm server1 # -f, --force: 强制移除,包含正在执行的容器。
怎么让 Ansible 操控用 Docker 开好的容器?
-
取得容器的 OpenSSH 设定:请特別留意
0.0.0.0:32805->22/tcp
的值。$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecdf39055ba2 chusiang/ansible-managed-node:ubuntu-14.04 "/usr/sbin/sshd -D" 20 hours ago Up 17 seconds 0.0.0.0:32805->22/tcp server1
-
设定 ansible.cfg:將
remote_user
设为docker
。$ vi ansible.cfg [defaults] hostfile = hosts remote_user = docker host_key_checking = False
-
设定 hosts。
$ vi hosts server1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=32805 ansible_ssh_pass=docker [local] server1
ansible_ssh_host
:请设为本机的 IP。ansible_ssh_port
:请设为docker ps
时取得的 SSH port。ansible_ssh_pass
:因没有连线用的 SSH 金钥,故直接使用密码的方式进行连线,建议只于练习环境使用该参数。
Hello World on Docker
当已上的设置都完成了,我们就可以在终端机里用 Docker 建立好的容器来练习 Ansible 了!
$ ansible all -m command -a 'echo Hello World on Docker.'
server1 | SUCCESS | rc=0 >>
Hello World on Docker.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于