通过ansible管理docker容器

时间:2022-07-22
本文章向大家介绍通过ansible管理docker容器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

说明:

1)在VM上装了一个4核8G的centos7.5系统

2)docker版本为 18.06.0-ce

docker的安装不再讲述

1、创建一个带有含有ssh的镜像,通过编写Dockerfile

```

Set the base image to centos

FROM centos:latest MAINTAINER fei #mount volume VOLUME ["/root/docker/ansible-demo/volume2”] ################## BEGIN INSTALLATION ###################### #install EPEL RUN rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  && rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && yum install -y yum-priorities

RUN yum install -y sudo RUN yum install -y net-tools openssh-clients openssh-server ansible vim ################## END INSTALLATION ######################

将sshd的UsePAM参数设置成no,优化ssh连接

RUN sed -i ’s/UsePAM yes/UsePAM no/g’ /etc/ssh/sshd_config

修改root用户密码,这里密码为:devilf

RUN echo “root:devilf"|chpasswd RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

启动sshd服务并且暴露22端口

RUN mkdir /var/run/sshd EXPOSE 22    #监听22端口,外界可以访问 ENTRYPOINT ["/usr/sbin/sshd”,"-D”]    #entrypoint表示默认情况下容器运行的命令

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

这里贴一下截图,可能粘贴赋值的会有些问题,以作参考 <p id="VpYCHPU"> <img class="alignnone size-full wp-image-464 " src="https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9.png" alt="" srcset="https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9.png 891w, https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9-150x65.png 150w, https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9-300x131.png 300w, https://www.devilf.cc/wp-content/uploads/2018/09/img_5b9e01bf602a9-768x335.png 768w" sizes="(max-width: 891px) 100vw, 891px" /> </p> 2、开始构建镜像 <div class="en-code">

docker build –no-cache -t fei/centos:ssh_ansible .

1 2 3 4 5 6 7 8 9 10 11

<p> 镜像名为: fei/centos:ssh_ansible </p> 3、启动容器(需要开启特权模式,否则会报错:Failed to get D-Bus connection: Operation not permitted)

docker run -itd -p 20021:22 –privileged=true –name node1 fei/centos:ssh_ansible docker run -itd -p 20022:22 –privileged=true –name node2 fei/centos:ssh_ansible … … docker run -itd -p 20020:22 –privileged=true –name ansible_server fei/centos:ssh_ansible

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

4、配置ansible主机清单,并建立互信关系 在这之前需要先进入到容器中,我们通过ssh的方式进入 修改ansible.cfg文件,将默认的hosts文件改为一个目录,修改为: <div class="en-code">

inventory     = /etc/ansible/conf.d

1 2 3 4 5 6 7

设置清单

cat conf.d/docker

[nodes] 172.17.0.2 172.17.0.3 172.17.0.4 172.17.0.5

1 2 3 4 5 6 7

生成密钥 <div class="en-code">

ssh-keygen

1 2 3 4 5 6 7 8 9 10

下发密钥 <div class="en-code"> ``` ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.17.0.2

5、测试

1

ansible nodes -m ping

注意:

查看容器IP的方法:

1

docker inspect --format '{{ .NetworkSettings.IPAddress }}' a7431673ece4

停止容器:

1

docker stop container_id

删除容器:

这里先说下如何构建一个带有ssh的镜像,然后通过这个镜像,我们起动了几个容器,通过这几个容器我们来练习ansible的使用方法,非常的简单和方便,一台虚机就可以完成ansible的练习,后面还会继续学习ansible和docker的学习。