安裝Docker
本來(lái)打算在CentOS6上安裝Docker,最終由于CentOS6上自帶的kernel版本太低導(dǎo)致Docker啟動(dòng)失敗而放棄(kernel升級(jí)太繁瑣)。
下面使用CentOS7安裝Docker,本人采用虛擬機(jī)的方式來(lái)安裝段化,安裝好的虛擬機(jī)必須保證能訪(fǎng)問(wèn)外網(wǎng)。
CentOS7 系統(tǒng) CentOS-Extras 庫(kù)中已帶 Docker,可以直接安裝:
$ sudo yum install docker
安裝之后啟動(dòng) Docker 服務(wù)隔躲,并讓它隨系統(tǒng)啟動(dòng)自動(dòng)加載:
$ sudo service docker start
$ sudo chkconfig docker on
獲取鏡像
可以使用 docker pull 命令來(lái)從倉(cāng)庫(kù)獲取所需要的鏡像。
下面的例子將從 Docker Hub 倉(cāng)庫(kù)下載一個(gè)Centos6并且安裝了jdk7的鏡像:
$ docker pull tcbenkhard/centos6-jdk7
列出本地鏡像
使用 docker images 顯示本地已有的鏡像物延。
$ docker images
啟動(dòng)容器
啟動(dòng)容器有兩種方式宣旱,一種是基于鏡像新建一個(gè)容器并啟動(dòng),另外一個(gè)是將在終止?fàn)顟B(tài)(stopped)的容器重新啟動(dòng)叛薯。
因?yàn)?Docker 的容器實(shí)在太輕量級(jí)了浑吟,很多時(shí)候用戶(hù)都是隨時(shí)刪除和新創(chuàng)建容器。
下面的命令則啟動(dòng)一個(gè) bash 終端耗溜,允許用戶(hù)進(jìn)行交互组力。
$ docker run -t -i centos6-jdk7 /bin/bash
[root@f8513ec39154 /]#
其中,-t 選項(xiàng)讓Docker分配一個(gè)偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上抖拴,-i 則讓容器的標(biāo)準(zhǔn)輸入保持打開(kāi)燎字。
當(dāng)利用 docker run 來(lái)創(chuàng)建容器時(shí)腥椒,Docker 在后臺(tái)運(yùn)行的標(biāo)準(zhǔn)操作包括:
(1)檢查本地是否存在指定的鏡像,不存在就從公有倉(cāng)庫(kù)下載
(2)利用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器
(3)分配一個(gè)文件系統(tǒng)候衍,并在只讀的鏡像層外面掛載一層可讀寫(xiě)層
(4)從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去
(5)從地址池配置一個(gè) ip 地址給容器
(6)執(zhí)行用戶(hù)指定的應(yīng)用程序
(7)執(zhí)行完畢后容器被終止
可以使用下面命令來(lái)查看CentOS版本信息:
$ cat /etc/redhat-release
修改root密碼
使用passwd密碼來(lái)修改密碼(如提示沒(méi)有這個(gè)命令行使用yum install passwd安裝):
$ passwd
xxx密碼
xxx確認(rèn)密碼
安裝Openssh
使用下面命令安裝ssh server/ssh client:
$ sudo yum -y install openssh-server
$ sudo yum -y install openssh-clients
修改SSH配置文件以下選項(xiàng)笼蛛,去掉#注釋?zhuān)瑢⑺膫€(gè)選項(xiàng)啟用:
$ vi /etc/ssh/sshd_config
RSAAuthentication yes #啟用 RSA 認(rèn)證
PubkeyAuthentication yes #啟用公鑰私鑰配對(duì)認(rèn)證方式
AuthorizedKeysFile .ssh/authorized_keys #公鑰文件路徑(和上面生成的文件同)
PermitRootLogin yes #root能使用ssh登錄
重啟ssh服務(wù),并設(shè)置開(kāi)機(jī)啟動(dòng):
$ service sshd restart
$ chkconfig sshd on
退出容器并保存更改
使用exit命令或者ctrl+C來(lái)退出當(dāng)前運(yùn)行的容器:
[root@f8513ec39154 /]# exit
注意:上面f8513ec39154是容器的ID蛉鹿,退出后用于保存的唯一ID滨砍。
當(dāng)結(jié)束后,我們使用 exit 來(lái)退出妖异,現(xiàn)在我們的容器已經(jīng)被我們改變了惋戏,使用 docker commit 命令來(lái)提交更新后的副本。
$ sudo docker commit -m 'install openssh' -a 'Docker Newbee' f8513ec39154 centos6-jdk7:ssh
其中他膳,-m 來(lái)指定提交的說(shuō)明信息响逢,跟我們使用的版本控制工具一樣;-a 可以指定更新的用戶(hù)信息棕孙;之后是用來(lái)創(chuàng)建鏡像的容器的ID舔亭;最后指定目標(biāo)鏡像的倉(cāng)庫(kù)名和 tag 信息。創(chuàng)建成功后會(huì)返回這個(gè)鏡像的 ID 信息散罕。
提交后docker中就會(huì)多出一個(gè)centos6-jdk7:ssh的一個(gè)鏡像分歇。
啟動(dòng)新的容器并打通22端口
將新的鏡像啟動(dòng),并將docker服務(wù)器的50001端口映射到容器的22端口上:
$ docker run -d -p 50001:22 centos6-jdk7:ssh /usr/sbin/sshd -D
SSH連接容器:
至此SSH連接docker容器成功完成E肥V奥铡!
補(bǔ)充說(shuō)明
多個(gè)docker鏡像之間是相互獨(dú)立的
# 進(jìn)入docker(exit退出后需要重新啟動(dòng)误甚,修改后需要commit)
$ docker attach Name/ID
$ docker start Name/ID
$ docker commit ID new_image_name
# 進(jìn)入docker(exit退出后不需要重新啟動(dòng)缚甩,修改后不需要commit)
$ docker exec -it Name/ID /bin/bash
# 修改鏡像NAME
$ docker rename Name/ID 新名