首先從官方或者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