1. 程式人生 > >Docker使用Dockerfile建立支援ssh服務自啟動的容器映象

Docker使用Dockerfile建立支援ssh服務自啟動的容器映象

1. 首先建立一個Dockerfile檔案,檔案內容如下

# 選擇一個已有的os映象作為基礎
FROM centos:centos6
 
# 映象的作者
MAINTAINER Fanbin Kong "[email protected]"
 
# 安裝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,密碼admin,並且將此使用者新增到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服務並且暴露22埠
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 [email protected]<容器IP>
4.2 另外,也可以通過docker的埠對映來訪問, 使用“sudo docker port mytest 22”檢視當前容器的22埠對應的宿主機器的埠,然後通過下面的命令來訪問
ssh [email protected]<宿主機器IP> -p <宿主機器埠>