Docker使用Dockerfile建立支援ssh服務自啟動的容器映象
阿新 • • 發佈:2018-12-26
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 <宿主機器埠>