Docker使用Dockerfile創建支持ssh服務自啟動的容器鏡像


原文鏈接:Docker使用Dockerfile創建支持ssh服務自啟動的容器鏡像

1. 首先創建一個Dockerfile文件。文件內容例如以下

# 選擇一個已有的os鏡像作為基礎
FROM centos:centos6
 
# 鏡像的作者
MAINTAINER Fanbin Kong "kongxx@hotmail.com"
 
# 安裝openssh-server和sudo軟件包,而且將sshd的UsePAM參數設置成no
RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
 
# 加入測試用戶admin。passwordadmin,而且將此用戶加入到sudoers里
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers
 
# 以下這兩句比較特殊,在centos6上必需要有。否則創建出來的容器sshd不能登錄
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服務而且暴露22port
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

Dockerfile文件有自己的語法和命令。詳細能夠參考Docker的官方文檔。

2. 有了Dockerfile文件以后,就能夠依據Dockerfile來創建image文件了。在Dockerfile所在的文件夾下,執行以下的命令
sudo docker build -t centos6-ssh .
命令成功后,就會創建一個名字為centos6-ssh的image,能夠使用“sudo docker images”來查看。


3. 此時就能夠依據上面創建出來的image文件來創建自己的容器了,以下的命令會創建一個名字為“mytest”的容器。


sudo docker run -d -P --name=mytest centos6-ssh

4. 有了容器,就能夠測試我們的ssh服務了。


4.1 執行“sudo docker inspect mytest”,查看當前啟動容器IP地址。然后執行以下的命令來測試

ssh admin@<容器IP>
4.2 另外,也能夠通過docker的port映射來訪問, 使用“sudo docker port mytest 22”查看當前容器的22port相應的宿主機器的port,然后通過以下的命令來訪問
ssh admin@<宿主機器IP> -p <宿主機器port>



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM