使用DNS公开Docker端口和访问以便于Ansible-Access
我想先用Ansible做一些testing,然后覆盖我的Liveserver上的设置。 所以我决定针对本地docker实例运行Ansible。
是否有可能暴露Docker-Contianer的端口通过DNS名称(如“mailserver.local”/“webserver.local”)访问它们,而不是将端口绑定到本地主机?
最后,我想为我的服务器设置编写一个docker-compose,其中每个docker容器的行为与我的服务器完全相同,而不考虑第30个端口绑定到localhost的位置。
我的Dockerfile
FROM ubuntu:16.04 MAINTAINER Sven Dowideit <SvenDowideit@docker.com> RUN apt-get update && apt-get install -y openssh-server python RUN mkdir /var/run/sshd RUN echo 'root:root' | chpasswd RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile EXPOSE 22 EXPOSE 80 EXPOSE 443 EXPOSE 110 EXPOSE 143 EXPOSE 25 EXPOSE 465 EXPOSE 587 EXPOSE 993 EXPOSE 995 CMD ["/usr/sbin/sshd", "-D"]
那么,我会告诉你我是怎么做到的(虽然我正在考虑把我的第30端口绑定到localhost):
- 我用
-p 10022:22 -p 10080:80 -p 10443:443
运行我的容器 -
我在我的
/etc/hosts
文件中有127.0.0.1 <containername>
-
我的
<containername>:10022
在我的库存清单文件中
这样,您可以轻松地运行任何想要针对单个主机名进行testing的手册。
你也可以自动恢复你的容器 – 例如,如果你想做一个干净的游戏,你需要一个容器的图像。 一个bash脚本将为此做的工作 – docker stop containername
, docker rm containername
,然后docker run ...
我现在正在使用traefik,解决了我所有的问题