Docker-SSH連接docker容器

安裝Docker

本來打算在CentOS6上安裝Docker,最終由于CentOS6上自帶的kernel版本太低導致Docker啟動失敗而放棄(kernel升級太繁瑣)。

下面使用CentOS7安裝Docker,本人采用虛擬機的方式來安裝,安裝好的虛擬機必須保證能訪問外網。

CentOS7 系統(tǒng) CentOS-Extras 庫中已帶 Docker,可以直接安裝:

$ sudo yum install docker

安裝之后啟動 Docker 服務,并讓它隨系統(tǒng)啟動自動加載:

$ sudo service docker start
$ sudo chkconfig docker on

獲取鏡像

可以使用 docker pull 命令來從倉庫獲取所需要的鏡像。
下面的例子將從 Docker Hub 倉庫下載一個Centos6并且安裝了jdk7的鏡像:

$ docker pull tcbenkhard/centos6-jdk7

列出本地鏡像

使用 docker images 顯示本地已有的鏡像。

$ docker images

啟動容器

啟動容器有兩種方式,一種是基于鏡像新建一個容器并啟動,另外一個是將在終止狀態(tài)(stopped)的容器重新啟動。

因為 Docker 的容器實在太輕量級了,很多時候用戶都是隨時刪除和新創(chuàng)建容器。
下面的命令則啟動一個 bash 終端,允許用戶進行交互。

$ docker run -t -i centos6-jdk7 /bin/bash
[root@f8513ec39154 /]#

其中,-t 選項讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入上,-i 則讓容器的標準輸入保持打開。

當利用 docker run 來創(chuàng)建容器時,Docker 在后臺運行的標準操作包括:
(1)檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
(2)利用鏡像創(chuàng)建并啟動一個容器
(3)分配一個文件系統(tǒng),并在只讀的鏡像層外面掛載一層可讀寫層
(4)從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
(5)從地址池配置一個 ip 地址給容器
(6)執(zhí)行用戶指定的應用程序
(7)執(zhí)行完畢后容器被終止

可以使用下面命令來查看CentOS版本信息:

$ cat /etc/redhat-release

修改root密碼

使用passwd密碼來修改密碼(如提示沒有這個命令行使用yum install passwd安裝):

$ passwd
    xxx密碼
    xxx確認密碼

安裝Openssh

使用下面命令安裝ssh server/ssh client:

$ sudo yum -y install openssh-server
$ sudo yum -y install openssh-clients

修改SSH配置文件以下選項,去掉#注釋,將四個選項啟用:

$ vi /etc/ssh/sshd_config

RSAAuthentication yes #啟用 RSA 認證
PubkeyAuthentication yes #啟用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys #公鑰文件路徑(和上面生成的文件同)
PermitRootLogin yes #root能使用ssh登錄

重啟ssh服務,并設置開機啟動:

$ service sshd restart
$ chkconfig sshd on

退出容器并保存更改

使用exit命令或者ctrl+C來退出當前運行的容器:

[root@f8513ec39154 /]# exit

注意:上面f8513ec39154是容器的ID,退出后用于保存的唯一ID。

當結束后,我們使用 exit 來退出,現在我們的容器已經被我們改變了,使用 docker commit 命令來提交更新后的副本。

$ sudo docker commit -m 'install openssh' -a 'Docker Newbee' f8513ec39154  centos6-jdk7:ssh

其中,-m 來指定提交的說明信息,跟我們使用的版本控制工具一樣;-a 可以指定更新的用戶信息;之后是用來創(chuàng)建鏡像的容器的ID;最后指定目標鏡像的倉庫名和 tag 信息。創(chuàng)建成功后會返回這個鏡像的 ID 信息。

提交后docker中就會多出一個centos6-jdk7:ssh的一個鏡像。

啟動新的容器并打通22端口

將新的鏡像啟動,并將docker服務器的50001端口映射到容器的22端口上:

$ docker run -d -p 50001:22 centos6-jdk7:ssh /usr/sbin/sshd -D

SSH連接容器:


至此SSH連接docker容器成功完成?。?!

補充說明

多個docker鏡像之間是相互獨立的

# 進入docker(exit退出后需要重新啟動,修改后需要commit)
$ docker attach Name/ID
$ docker start Name/ID
$ docker commit ID new_image_name

# 進入docker(exit退出后不需要重新啟動,修改后不需要commit)
$ docker exec -it Name/ID /bin/bash
# 修改鏡像NAME
$ docker rename Name/ID 新名
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,828評論 15 147
  • 0x01 核心概念 Docker鏡像類似于虛擬機鏡像,可以理解為一個面向Docker引擎的只讀模板,包含了文件系統(tǒng)...
    閑云逸心閱讀 4,955評論 0 9
  • 轉載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,719評論 0 120
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應用容器引擎,基于容器化,沙箱機制的應用部署技術???..
    sessionboy閱讀 3,988評論 2 49
  • 西塞山前白鷺飛(六) 六 如花在家捯飭了一下午,為了和肖琴父母見面,她不得不注意形象,洗了個澡,去掉身上的胭脂香粉...
    六月孺子牛閱讀 573評論 2 4

友情鏈接更多精彩內容