步驟1:為我們的容器創(chuàng)建第一個鏡像
創(chuàng)新互聯(lián)公司服務(wù)項目包括頭屯河網(wǎng)站建設(shè)、頭屯河網(wǎng)站制作、頭屯河網(wǎng)頁制作以及頭屯河網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,頭屯河網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到頭屯河省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
# 以 centos 鏡像作為基礎(chǔ)鏡像,我們啟動自己的容器并在其中執(zhí)行/bin/bash命令
# 注:-t -i 參數(shù)用于創(chuàng)建一個虛擬的命令行。
sudo docker run -t -i centos /bin/bash
現(xiàn)在我們已經(jīng)成功的運行了自己的第一個容器,并且進(jìn)入到容器的命令行界面中。在容器中,我們執(zhí)行下面的命令:
yum -y update # 更新軟件包
yum install which # 安裝which命令
yum install git # 安裝Git
安裝完成后,按 Ctrl + d 來退出容器的命令行。
# 執(zhí)行sudo docker ps -a,可以看到被我們終止的容器
CONTAINER ID IMAGE COMMAND CREATED……
da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..
把我們所做的改變提交到一個新的容器:
# 這里我們創(chuàng)建一個自己的基礎(chǔ)容器,容器中安裝好了文章中所需的常用工具。讀者的容器 id 可能與文章中的有所不同,以上一步 docker ps -a 的結(jié)果為準(zhǔn)。
sudo docker commit da90 custom/base
容器成功提交后,執(zhí)行 sudo docker images ,我們會看到剛才提交的容器(如下面的結(jié)果所示)。我們就以這個容器為基礎(chǔ)容器,再來創(chuàng)建一個新的容器。
REPOSITORY TAG IMAGE ID CREATED
custom/base latest 05b6cecd370b 2 minutes ago
centos 6.4 539c0211cd76 10 months ago
centos latest 539c0211cd76 10 months ago…
步驟2:創(chuàng)建新的容器,并安裝 apache
# 以 custom/base 容器為基礎(chǔ),運行一個新的容器。
sudo docker run -t -i custom/base /bin/bash
# 安裝 httpd
yum install httpd
步驟3:再次提交新的容器
按 Ctrl + d 來退出容器的命令行,然后執(zhí)行命令:
# 這個命令會把步驟2中我們安裝 httpd 帶來的改變提交到新的名為 custom/httpd 的容器鏡像中。你的容器 id 可能會和文章中有所不同,以 sudo docker ps -a 命令的結(jié)果為準(zhǔn)。
sudo docker commit aa6e2fc0b94c custom/httpd
你應(yīng)該已經(jīng)發(fā)現(xiàn)了,我們創(chuàng)建了一個帶有 http 服務(wù)器并可以復(fù)用的容器鏡像。你可以根據(jù)這種思想,為自己所需的每個組件都創(chuàng)建一個容器,然后把這些容器復(fù)用于開發(fā)環(huán)境或者生產(chǎn)環(huán)境。
步驟7:運行 http 服務(wù)器
# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.
# -v 參數(shù)把主機共享給虛擬機的一個卷掛載到容器中
# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile
# -p 參數(shù)把虛擬機的80端口映射到容器的80端口;虛擬機的80端口在 Vagrantfile 中被綁定到主機的8080端口,也就是:主機8080-虛擬機80-容器80
sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash
# 啟動 Apache
apachectl -k start
當(dāng)前Ubuntu 系統(tǒng)下的 Docker 的安裝包只提供64位。如果你想運行32位的 Docker,你需要。
安裝 Docker
通過 apt-get 安裝 Docker 簡直是小菜一碟。
$ sudo apt-get install docker.io
如果你不是 root 組的用戶,你可以把自己加入到 docker 用戶組。下面的命令可以讓沒有 root 權(quán)限的用戶使用 Docker:
$ sudo usermod -a -G docker $USER
重新登錄,以便讓你的用戶組權(quán)限生效。
下一步是編輯 Docker 配置文件,確定 Docker 可執(zhí)行文件的路徑:
$ sudo vi /etc/default/docker.io
DOCKER= /usr/bin/docker.io
重啟 Docker 服務(wù):
$ sudo service docker.io restart
管理 Docker Container 容器
如果你想在新的 Docker 容器下創(chuàng)建一個新的 Ubuntu 操作系統(tǒng),你首先需要 pull 一個 的 Docker 鏡像。下面的命令可以通過網(wǎng)絡(luò)下載 Docker 鏡像:
$ docker pull ubuntu
你可以使用下面的命令啟動 Docker 里面的 Ubuntu 系統(tǒng)。最后的參數(shù) /bin/bash 表示一旦容器啟動,首先會執(zhí)行簡單的 bash。
$ docker run -i -t ubuntu /bin/bash
上面的命令會立即啟動 Ubuntu container 容器(這是一個完美的容器!),然后它會提供一個 shell 提示符運行環(huán)境給你?,F(xiàn)在開始你可以通過這個沙箱環(huán)境訪問一個完整的 Ubuntu 系統(tǒng)了。
輸入 exit 命令退出 Docker 容器。
你也可以用下面的命令進(jìn)入不同的系統(tǒng)。比如 Fedora:
$ docker.io run -i -t fedora /bin/bash
如果系統(tǒng)中還不存在 Fedora Docker 鏡像,這個命令會自動下載它,然后啟動這個 Fedora 的 Docker 容器。
如果你想要開啟指定版本的系統(tǒng),比如 Ubuntu 13.04,你可以使用下面的命令:
$ docker.io run -i -t ubuntu:13.04 /bin/bash
Container 容器網(wǎng)絡(luò)設(shè)置
Docker 使用 Linux 橋接技術(shù)與其他容器通信,以及連通外網(wǎng)。安裝完 Docker 后你應(yīng)該可以看到 docker0 這個網(wǎng)橋,這是 Docker 默認(rèn)創(chuàng)建的。你創(chuàng)建的每個容器都會通過這個網(wǎng)橋連接到網(wǎng)絡(luò)。
自定義 Linux 網(wǎng)橋
如果你想自定義網(wǎng)橋,你可以執(zhí)行以下步驟。你可以在這個網(wǎng)橋后面分配一個子網(wǎng),并為這個子網(wǎng)分配地址。下面的命令會為 Docker 子網(wǎng)分配 10.0.0.0/24 地址段:
$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0
$ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0
然后在 /etc/default/docker.io 文件的 DOCKER_OPTS 變量里添加 -b=br0 選項,并重啟 Docker 服務(wù):
$ sudo service docker.io restart
到目前為止,任何創(chuàng)建的容器都會連上 br0 網(wǎng)橋,它們的 IP 地址會從 10.0.0.0/24 中自動分配(譯注:在10.0.0.2到10.0.0.254之間隨機分配)。
其他自定義設(shè)置
你可以通過 /etc/default/docker.io 文件的 DOCKER_OPTS 變量設(shè)置其他一些屬性:
-dns 8.8.8.8 -dns 8.8.4.4 : 為容器指定 DNS 服務(wù)器。
-icc=false : 將容器與其他容器隔離出來
疑難解答
1、當(dāng)你運行 docker.io 命令時,你可能會遇到以下問題:
dial unix /var/run/docker.sock: no such file or directory
這個錯誤可能是由于 Docker 后臺進(jìn)程沒有啟動。檢查下 Docker 后臺進(jìn)程的狀態(tài),確認(rèn)它已經(jīng)處于啟動狀態(tài):
$ sudo service docker.io status$ sudo service docker.io start
Docker中我們一般會有兩種執(zhí)行命令的方式,一種是直接進(jìn)入容器的命令行,在終端執(zhí)行并查看結(jié)果,一種是在后臺執(zhí)行,并不會在終端查看結(jié)果。
1、進(jìn)入容器命令行
su root
docker run -i -t ubuntu:16.04/bin/bash#或者執(zhí)行下面這句docker run -it ubuntu:16.04/bin/bash
-i和-t的作用是幫助你進(jìn)入交互模式,如果不加這部分,你將無法進(jìn)入容器內(nèi)部,更別說使用命令行了。/bin/bash的意思就是使用容器的命令行來輸入命令。執(zhí)行結(jié)果如下:
root@7d150a0fb029:/#
root后面跟的就是容器id,表明你已經(jīng)進(jìn)入容器,可以輸入命令了,你可以輸入一些常用命令試試:
root@7d150a0fb029:/# docker run -i -t ubuntu:16.04 /bin/bash
結(jié)果輸出了鏡像的內(nèi)核版本信息:
Linux version 4.13.0-36-generic (buildd@lgw01-amd64-033)(gcc version 5.4.020160609(Ubuntu5.4.0-6ubuntu1~16.04.9))#40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018
通過exit可退出容器。
2、后臺執(zhí)行命令
輸入下面的代碼,-d表示的就是后臺運行,這點可以直接通過docker run –help查看該命令的功能。下面這句話的意思就是在鏡像的程序中添加引號內(nèi)的代碼,并在后臺運行。
docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1;done"
輸出結(jié)果不會顯示運行的結(jié)果,而是給出新建的容器id,這里說明一下,每次輸入docker run命令都會新建一個容器,產(chǎn)生一個新的id。
輸出結(jié)果如下:
c7188be9bd7b5c0aa91c5eeb72013996c89bfdc2181d1a5ff7f880af6f8aff99
查看一下正在運行的容器:
root@cdl-XPS15R:/home/cdl# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7188be9bd7b ubuntu:16.04"/bin/sh -c 'while t…"13 seconds ago Up11 seconds keen_vaughan1b6ba17f7df7 ubuntu:16.04"/bin/bash"2 minutes ago Exited(0)2 minutes ago cocky_noether7d150a0fb029 ubuntu:16.04"/bin/bash"4 minutes ago Exited(0)2 minutes ago hopeful_banach
這里會發(fā)現(xiàn),第一個容器的id和后臺運行的容器id前幾位一模一樣,但是長度要長很多,其實是一樣的,只不過通過ps命令打印輸出時為了方便顯示只顯示了前幾位。
如果想要進(jìn)入后臺運行的容器的命令行而不創(chuàng)建新的容器,只需要輸入以下命令:
#Exec是進(jìn)入已經(jīng)存在的容器,run是創(chuàng)建新容器docker Exec-it c7188be9bd7b /bin/bash
輸入哪個更長的id也是一樣的效果:
docker Exec -it c7188be9bd7b5c0aa91c5eeb72013996c89bfdc2181d1a5ff7f880af6f8aff99 /bin/bash
輸出結(jié)果都是:
root@c7188be9bd7b:/#
文章標(biāo)題:linux退出容器命令,linux怎么退出容器
轉(zhuǎn)載源于:http://jinyejixie.com/article34/hojpse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、Google、標(biāo)簽優(yōu)化、網(wǎng)頁設(shè)計公司、響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)