通过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的学习。
- 使用shell脚本查看数据库负载情况(第二篇)(r3笔记第92天)
- tensorflow LSTM + CTC实现端到端OCR
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能
- 黑客比程序员牛在哪?
- oracle工具集初探(r4笔记第8天)
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(二)Log4j讲解与整合
- 京东JData算法大赛-高潜用户购买意向预测(github源码)
- 巧用linux命令做图片下载器(r4笔记第7天)
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(四)单元测试实例
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(五)结合MockMvc进行服务端的单元测试
- 关于order by中的数据排序(r4笔记第6天)
- 深度学习CTPN+CRNN模型实现图片内文字的定位与识别(OCR)
- Markdown语法讲解及MWeb使用教程
- 通过Linu命令实现屏幕录制和回放(r4笔记第5天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 汇编程序调用c函数为什么需要设置栈?
- Uboot到底如何启动内核
- Flink部署及作业提交(On YARN)
- Flink部署及作业提交(On Flink Standalone)
- MySQL题集
- 《深入浅出SQL》问答录
- Python_字典实现简单预约系统
- java_二维数组简单快递系统
- RabbitMQ六种工作模式
- Java生成随机姓名、性别和年龄
- 商业数据分析从入门到入职(8)Python模块、文件IO和面向对象
- 7.13论坛常见问题以及解决办法
- 移植SDL到JZ2440显示BMP图片
- Vue图片验证码-自定义组件高级版
- Angular页面调试一个有用的小技巧 - normalizeDebugBindingName和normalizeDebugBindingValue