docker容器,docker commit創建ssh容器

在寫這個之前給大家推薦一個很好用的docker image 下載地方——daocloud(http://get.daocloud.io/)


對於docker容器的操作,我們可以通過

docker exec -it  <容器名 或 容器id> /bin/bash

或者

docker attach <容器名 或 容器id>

進入容器內部操作,其實有很多的時候我們可以通過 ssh 連接從而來操作容器,今天就來跟大家分享一下如何用docker commit指令來製作一個ssh image


以下的操作都是用 root 賬號進行操作的,宿主機是 Ubuntu16.04-server版的。


1.我們進入(我個人喜歡在 /home 目錄中進行操作)/home 目錄

cd /home


2.先從daocloud中pull一個基礎鏡像下來:

docker pull docker pull daocloud.io/library/ubuntu:14.04


3.用基礎鏡像創建一個容器:

docker run -it --name ssh-base daocloud.io/library/ubuntu:14.04 /bin/bash

不出意外話,我們應該在容器中了。


4.我們先更新一下這個容器的安裝包:

apt-get update -y 


5.我們安裝ssh服務和ssh客戶端(主要用於測試)

apt-get install -y openssh-server openssh-client  libmysqlclient (安裝三個軟件)


6.我們給容器的 root 用戶設置一個密碼:

passwd root (按照提示輸入密碼即可)

在這裏一個要注意:容器的 root 用戶 和 宿主機的 root 用戶不是同一個用戶,因爲 在 docker容器中用一個 用戶命名空間 的概念從而讓容器與容器,容器與宿主機之間

進行隔離。


7.對於Ubuntu而言,root用戶是不能通過 ssh 連接的,但是可以修改 ssh 的配置文件

vi /etc/ssh/sshd_config

把文件中的 PermitRootLogin 這一行註釋掉,改爲 PermitRootLogin  yes ,保存退出


8.重新啓動 ssh 服務:

先創建一個目錄

mkdir -p /var/run/sshd

/etc/init.d/ssh restart


9.這個時候我們在容器中測試一個可不可以 ssh 登錄了:

ssh localhost

不出意外的話,我們可以成功登錄了, 輸入 exit 我們就可以退出登錄


10.我們創建一個 /runssh.sh 文件:

vi /runssh.sh

在該文件中我們輸入以下內容:

/usr/sbin/sshd -D

然後我們保存退出

給該文件賦予一定的權限: chmod 777 /runssh.sh


11.這個時候,我們就可以退出容器了:

exit


12.我們就用剛纔的容器來創建鏡像了:

docker commit ssh-base ssh:01

注意:ssh-base:是剛纔創建的容器名;ssh:01 是我們要創建的鏡像名


13.我們可以啓動一個  ssh 容器了:

docker run -it -d --name ssh01 -P ssh:01 /runssh.sh


14.我們可以通過ssh連接該容器了:

ssh root@localhost -p <端口號>


15.如果我們要進入改容器內部應該用下面的指令:

docker exec -it ssh01 /bin/bash






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章