下面是安裝 Docker 客戶端并在上面運(yùn)行容器的簡(jiǎn)單步驟。
創(chuàng)新互聯(lián)建站主營(yíng)常山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP軟件開(kāi)發(fā),常山h5成都小程序開(kāi)發(fā)搭建,常山網(wǎng)站營(yíng)銷推廣歡迎常山等地區(qū)企業(yè)咨詢
1. 下載 Boot2Docker
在我們開(kāi)始安裝之前,我們需要 Boot2Docker 的可執(zhí)行文件??梢詮?它的 Github 下載最新版本的 Boot2Docker。在這篇指南中,我們從網(wǎng)站中下載版本 v1.6.1。我們從那網(wǎng)頁(yè)中用我們喜歡的瀏覽器或者下載管理器下載了名為 docker-install.exe 的文件。
2. 安裝 Boot2Docker
現(xiàn)在我們運(yùn)行安裝文件,它會(huì)安裝 Window Docker 客戶端、用于 Windows 的 Git(MSYS-git)、VirtualBox、Boot2Docker Linux ISO 以及 Boot2Docker 管理工具,這些對(duì)于開(kāi)箱即用地運(yùn)行全功能的 Docker 引擎都至關(guān)重要。
3. 運(yùn)行 Boot2Docker
安裝完成必要的組件之后,我們從桌面上的“Boot2Docker Start”快捷方式啟動(dòng) Boot2Docker。它會(huì)要求你輸入以后用于驗(yàn)證的 SSH 密鑰。然后會(huì)啟動(dòng)一個(gè)配置好的用于管理在虛擬機(jī)中運(yùn)行的 Docker 的 unix shell。
為了檢查是否正確配置,運(yùn)行下面的 docker version 命令。
docker version
4. 運(yùn)行 Docker
由于 Boot2Docker Start 自動(dòng)啟動(dòng)了一個(gè)已經(jīng)正確設(shè)置好環(huán)境變量的 shell,我們可以馬上開(kāi)始使用 Docker。請(qǐng)注意,如果我們要將 Boot2Docker 作為一個(gè)遠(yuǎn)程 Docker 守護(hù)進(jìn)程,那么不要在 docker 命令之前加 sudo。
現(xiàn)在,讓我們來(lái)試試 hello-world 例子鏡像,它會(huì)下載 hello-world 鏡像,運(yùn)行并輸出 "Hello from Docker" 信息。
$ docker run hello-world
5. 使用命令提示符(CMD) 運(yùn)行 Docker
現(xiàn)在,如果你想開(kāi)始用命令提示符使用 Docker,你可以打開(kāi)命令提示符(CMD.exe)。由于 Boot2Docker 要求 ssh.exe 在 PATH 中,我們需要在命令提示符中輸入以下命令使得 %PATH% 環(huán)境變量中包括 Git 安裝目錄下的 bin 文件夾。
set PATH=%PATH%;"c:\Program Files (x86)\Git\bin"
運(yùn)行上面的命令之后,我們可以在命令提示符中運(yùn)行 boot2docker start 啟動(dòng) Boot2Docker 虛擬機(jī)。
boot2docker start
注意: 如果你看到 machine does no exist 的錯(cuò)誤信息,就運(yùn)行 boot2docker init 命令。
然后復(fù)制上圖中控制臺(tái)標(biāo)出命令到 cmd.exe 中為控制臺(tái)窗口設(shè)置環(huán)境變量,然后我們就可以像平常一樣運(yùn)行 docker 容器了。
6. 使用 PowerShell 運(yùn)行 Docker
為了能在 PowerShell 中運(yùn)行 Docker,我們需要啟動(dòng)一個(gè) PowerShell 窗口并添加 ssh.exe 到 PATH 變量。
$Env:Path="${Env:Path};c:\Program Files (x86)\Git\bin"
運(yùn)行完上面的命令,我們還需要運(yùn)行
boot2docker start
這會(huì)打印用于設(shè)置環(huán)境變量連接到虛擬機(jī)內(nèi)部運(yùn)行的 Docker 的 PowerShell 命令。我們只需要在 PowerShell 中運(yùn)行這些命令就可以和平常一樣運(yùn)行 docker 容器。
7. 用 PUTTY 登錄
Boot2Docker 會(huì)在%USERPROFILE%.ssh 目錄生成和使用用于登錄的公共和私有密鑰,我們也需要使用這個(gè)文件夾中的私有密鑰。私有密鑰需要轉(zhuǎn)換為 PuTTY 的格式。我們可以通過(guò) puttygen.exe 實(shí)現(xiàn)。
我們需要打開(kāi) puttygen.exe 并從 %USERPROFILE%.ssh\id_boot2docker 中導(dǎo)入("File"-"Load" 菜單)私鑰,然后點(diǎn)擊 "Save Private Key"。然后用保存的文件通過(guò) PuTTY 用 docker@127.0.0.1:2022 登錄。
8. Boot2Docker 選項(xiàng)
Boot2Docker 管理工具提供了一些命令,如下所示。
1、鏈接到操作系統(tǒng)
2、第一步停掉tomcat服務(wù),如下(操作命令及截圖)
a、進(jìn)入到tomcat的bin目錄, cd /soft/apache-tomcat-7.0.77/bin
b、停止服務(wù), ./shutdown.sh
c、查看狀態(tài), ps -ef|grep java
ps:如按步驟執(zhí)行后,界面如圖所示則說(shuō)明tomcat已正常關(guān)閉
2、第二步刪除tomcat的webapps目錄下的文件及文件夾(我的上篇博客文章已具體介紹對(duì)文件的刪除)
3、第三步將打好包的war包上傳至linux的指定目錄下,這里不介紹怎么上傳了,(我自己用的xftp工具上傳的)
4、第四步重啟tomcat(重啟tomcat相當(dāng)于容器將war包編譯解析出來(lái)成工程目錄)
./startup.sh 同樣需要在tomcat的bin目錄下執(zhí)行命令,然后查看狀態(tài),如出現(xiàn)如下圖界面所示,表示啟動(dòng)成功
雖說(shuō)標(biāo)準(zhǔn)的硬件虛擬化技術(shù)(比如KVM、Xen或Hyper-V)擅長(zhǎng)于在一個(gè)物理主機(jī)上運(yùn)行多個(gè)操作系統(tǒng)的完全隔離的實(shí)例,但這種虛擬化技術(shù)在性能、資源和資源配置時(shí)間等方面存在各種各樣的開(kāi)銷。標(biāo)準(zhǔn)的機(jī)器虛擬化實(shí)際上可能沒(méi)有必要,這取決于你的實(shí)際使用場(chǎng)合。
另外一種輕型虛擬化方法就是所謂的Linux容器(LXC),它提供了操作系統(tǒng)級(jí)別的虛擬化。由于不存在運(yùn)行虛擬機(jī)帶來(lái)的開(kāi)銷,LXC讓用戶可以在輕型容器沙盒里面運(yùn)行標(biāo)準(zhǔn)Linux操作系統(tǒng)的多個(gè)實(shí)例。如果你搭建一個(gè)可復(fù)制的開(kāi)發(fā)/測(cè)試環(huán)境,或者在安全沙盒里面部署應(yīng)用程序,容器就派得上大用場(chǎng)。
Docker就是為了便于部署Linux容器而開(kāi)發(fā)的這樣一款開(kāi)源工具。Docker正迅速成為容器技術(shù)方面的一項(xiàng)事實(shí)上的標(biāo)準(zhǔn),已經(jīng)被諸如Ubuntu和紅帽之類的各大Linux發(fā)行版所采用。
我在本教程中將演示如何在Ubuntu 14.04上,借助Docker管理Linux容器。請(qǐng)注意:對(duì)Ubuntu的早期版本而言,操作步驟可能略有不同。
眼下,Ubuntu上可用的Docker程序包只支持64位系統(tǒng)。想在32位機(jī)器上運(yùn)行它,你就要利用源代碼構(gòu)建32位版本的Docker(詳見(jiàn)這里)。
安裝Docker
借助apt-get命令,安裝Docker是件輕而易舉的事。
$ sudo apt-get install docker.io
為了允許非根用戶也可以運(yùn)行Docker,將你自己添加到docker群組。下面這個(gè)命令會(huì)允許當(dāng)前用戶運(yùn)行Docker,無(wú)需根用戶權(quán)限。
$ sudo usermod -a -G docker $USER
退出,然后重新登錄,以激活群組成員的變化。
下一步,編輯Docker配置文件,以便更新Docker二進(jìn)制代碼的位置。
$ sudo vi /etc/default/docker.io
DOCKER="/usr/bin/docker.io"
重啟Docker服務(wù)。
$ sudo service docker.io restart
管理Docker容器
如果你想啟動(dòng)Ubuntu操作系統(tǒng)的一個(gè)新的Docker容器,首先需要獲取Ubuntu Docker映像文件。下面這個(gè)命令會(huì)通過(guò)網(wǎng)絡(luò)下載Docker映像文件。
$ docker pull ubuntu
你可以以一種交互模式來(lái)開(kāi)啟Ubuntu Docker,如下所示。最后一個(gè)參數(shù)“/bin/bash”是一旦啟動(dòng)就將在容器里面執(zhí)行的命令,這里是一個(gè)簡(jiǎn)單的bash外殼命令。
$ docker run -i -t ubuntu /bin/bash
上述命令會(huì)立即啟動(dòng)一個(gè)Ubuntu容器(這正是容器的魅力所在?。槟闾峁┤萜骼锩娴耐鈿ぬ崾痉?。這時(shí)候,你應(yīng)該能夠訪問(wèn)沙盒環(huán)境里面的標(biāo)準(zhǔn)的Ubuntu操作系統(tǒng)了。
想退出Docker容器,在容器里面的提示符處鍵入“exit”。
你可以啟動(dòng)不同形式的容器。比如,想啟動(dòng)Fedora容器,請(qǐng)執(zhí)行下面這個(gè)命令:
$ docker.io run -i -t fedora /bin/bash
如果本地沒(méi)有Fedora Docker映像文件,該命令就會(huì)首先自動(dòng)下載映像文件,然后啟動(dòng)Docker。
如果你想啟動(dòng)采用某個(gè)發(fā)行版版本的容器,也可以這么做。比如說(shuō),想啟動(dòng)Ubuntu 13.04 Docker,請(qǐng)執(zhí)行下面這個(gè)命令:
$ docker.io run -i -t ubuntu:13.04 /bin/bash
容器網(wǎng)絡(luò)
Docker使用Linux網(wǎng)橋?qū)⑷萜鞅舜嘶ヂ?lián)起來(lái),并將它們連接到外部網(wǎng)絡(luò)。安裝了Docker后,你應(yīng)該會(huì)看到默認(rèn)情況下自動(dòng)組建的docker0 Linux網(wǎng)橋。你創(chuàng)建的每個(gè)容器都將連接到docker0網(wǎng)橋接口。
自定義Linux網(wǎng)橋
如果你想,也可以使用自定義Linux網(wǎng)橋?qū)⒅T容器互聯(lián)起來(lái)。為此,你可以建立一個(gè)自定義網(wǎng)橋,并對(duì)它進(jìn)行配置,如下所示。你可以為該網(wǎng)橋分配一個(gè)單獨(dú)的子網(wǎng),并且從子網(wǎng)為Docker分配IP地址。我會(huì)使用10.0.0.0/24作為Docker子網(wǎng)。
$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0
$ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0
想讓Docker使用自定義網(wǎng)橋,將“-b=br0”添加到/etc/default/docker.io中的DOCKER_OPTS變量,然后重啟Docker服務(wù)。
$ sudo service docker.io restart
至此,任何新的容器都會(huì)連接到br0,其IP地址會(huì)自動(dòng)從10.0.0.0/24來(lái)分配。
其他定制
還有另外幾種方法可以定制Docker的默認(rèn)網(wǎng)絡(luò)設(shè)置,主要是通過(guò)改動(dòng)/etc/default/docker.io中的DOCKER_OPTS變量來(lái)實(shí)現(xiàn)。
“-dns 8.8.8.8 -dns 8.8.4.4”:指定容器使用的DNS服務(wù)器。
“-icc=false”:讓諸容器彼此隔離開(kāi)來(lái)。
故障排查
1. 運(yùn)行docker.io命令時(shí),你會(huì)遇到下面這個(gè)錯(cuò)誤。
dial unix /var/run/docker.sock: no such file or directory(沒(méi)有此類文件或目錄)
出現(xiàn)這個(gè)錯(cuò)誤,可能是由于Docker守護(hù)程序沒(méi)在運(yùn)行。檢查Docker守護(hù)程序的狀態(tài),確保先啟動(dòng)它。
$ sudo service docker.io status
$ sudo service docker.io start
(1)java -jar? 包名? ? ? ?當(dāng)窗口關(guān)閉或按Ctrl+c則程序終止
(2)java -jar 包名 ? ? ?當(dāng)窗口關(guān)閉則程序終止
(3)nohup java -jar 包名 ? ? 程序不因窗口關(guān)閉或按Ctrl+c而終止,生成默認(rèn)日志文件
(4)nohup java -jar 包名 日志名 ? ?在(3)的基礎(chǔ)上自定義生成日志
(1)tail n 日志名? ? n代表查看日志的行數(shù)
例子:tail 10 nohup.out? 查看正數(shù)10行的日志
例子:tail -10 nohup.out 查看倒數(shù)10行的日志
(2)tail -f nohup.out?實(shí)時(shí)查看日志
(1)ps -ef | grep java? ?查看進(jìn)程
???
(2)netstat -tunlp? ?端口號(hào)查看
kill -9? pid
例如查找文件名為nginx的文件? ? ?find? /? -name? nginx
(1)找到并進(jìn)入nginx文件夾下的sbin文件夾
(2)執(zhí)行? ./nginx? -s? reload
free 命令? ? 默認(rèn)以kb為計(jì)算單位,可以在后面通過(guò)添加? -b ,-m ,-g ,-h等修改計(jì)算單位
例如 free? -h以較友好的方式展示
按理來(lái)說(shuō)total = used + free ,但是這邊不曉得為什么free只剩了123M,有答案了再來(lái)補(bǔ)上
top 命令
top 行依次為系統(tǒng)時(shí)間、距上次重啟系統(tǒng)時(shí)間、登入用戶數(shù)、平均負(fù)載
tasks 行為進(jìn)程任務(wù)情況
cpu 行為cpu的使用情況
暫時(shí)沒(méi)了,想起來(lái)再補(bǔ)