【Docker】制作一個支持SSH終端登錄的鏡像


  首先從官方或者docker.cn的鏡像庫中pull下來ubuntu鏡像:  

docker pull ubuntu

  現在用命令查看一下pull下來的ubuntu鏡像:

docker images

  

  關於如何構建自定義的鏡像,有兩種方法:

    1、使用docker commit 命令

    2、使用Dockerfile

  無論是官方或者其他的教程,都大力推薦使用第二種方法,因為使用Dockerfile構建擁有比提交命令更高的靈活性和可維護性。所以這里也是通過Dockerfile來構建這個自定義的鏡像。

  ps: 關於commit命令,其實就是使用docker run -i -t XXX /bin/bash 進入容器的交互界面,進行各種操作后,再將這個容器通過提交命令提交上去來達到目的的。 


  首先編寫Dockerfile文件:

 1 FROM ubuntu
 2 
 3 MAINTAINER linxiong "linxiong945@gmail.com"
 4 
 5 # 更新源,安裝ssh server
 6 RUN echo "deb http://mirrors.163.com/ubuntu precise main universe" > /etc/apt/sources.list
 7 RUN apt-get update
 8 RUN apt-get install -y openssh-server
 9 RUN mkdir /var/run/sshd
10 
11 # 設置root ssh遠程登錄密碼為123456
12 RUN echo "root:123456" | chpasswd
13 
14 # 容器需要開放SSH 22端口
15 EXPOSE 22

  其中原生ubuntu鏡像中的下載源速度太慢,所以用163的源來更替他,在國內,163的源還是很快的。

  在使用apt-get安裝軟件時,需要加上"-y"的參數,如果不指定-y參數的話,apt-get命令會進入交互模式,需要用戶輸入命令來進行確認,但在docker環境中是無法響應這種交互的。所以就會造成安裝中斷這種問題。

  

  隨后通過chpasswd方法給ssh添加root用戶登錄密碼為123456。"chpasswd"可以批量的為ssh添加以"username:passwd"為格式的用戶與密碼。可以將username:passwd批量的寫在一個txt文件中,然后使用xxx.txt chpasswd方法為ssh批量添加用戶。

  最后容器需要開發22端口,以使外部能夠訪問容器內部。


  下一步就可以運行命令來構建支持SSH登錄的ubuntu鏡像了:

docker build -t linxiong/login .

  其中:

    -t   給該鏡像賦予一個tag,用以將來的調用與搜索 

    .   表示調用當前目錄的Dockerfile

  然后你就能看到構建過程:

  

  當成功構建完成后,你能看到:

  

  此刻用"docker images"命令查看鏡像,你能看到多了一個linxiong/login的鏡像:

  


  隨后我們用命令來使容器能長時間運行在后台,不至於運行了幾秒后容器會自動退出:

docker run -d -p 22 -p 80:8080 linxiong/login /usr/sbin/sshd -D

  其中:

    -d  表示使容器在后台運行

    -p      指定端口設置

      -p 80:8080  表示端口的映射,映射主機端口到容器,方便外部訪問容器內服務,主機端口80可以省略,省略表示把容器端口8080映射到一個動態端口。

    /usr/sbin/sshd   表示啟動ssh服務

    -D     表示容器長時間運行,不至於幾秒后退出

  這時候用docker ps命令查看正運行的容器:

  

  發現容器被隨機賦予了一個49159端口,這時候我們可以在主機用ssh命令來登錄這個容器:

ssh root@127.0.0.1 -p 49159

  將會出現:

  

  輸入yes,回車,會提示你輸入密碼,正確輸入密碼后,就進去到了容器環境中去了!

  

  接下來,想在容器中安裝什么東西,運行什么東西都可以了。

  啟動鏡像實例的時候,指定了 -p 80:8080,容器開放8080端口,映射到宿主機端口就是80。知道宿主機IP地址,那就可以自由訪問容器了。


  今天在實驗過程中,還出現了一個問題,這里將其記下:

  

  這里是軟件沖突了,只需要先將vim-common卸載,再安裝vim就可以了。

  Dockerfile:

1 FROM ubuntu
2 
3 MAINTAINER linxiong "linxiong945@gmail.com"
4 
5 RUN echo "deb http://mirrors.163.com/ubuntu precise main universe" > /etc/apt/sources.list
6 RUN apt-get update
7 RUN apt-get remove vim-common
8 RUN apt-get install -y vim

 


免責聲明!

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



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