Docker常用命令以及使用案例

參考資料

docker這個東西真的很好用,值得一學囱挑。

docker 安裝

1、docker的安裝非常簡單,只需要執(zhí)行官方提供的腳本就可以了。


// 官方腳本安裝

wget -qO- https://get.docker.com/ | sh

// 阿里云腳本安裝

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

// daocloud腳本安裝

curl -sSL https://get.daocloud.io/docker | sh

當然由于墻的問題,執(zhí)行這個腳本有可能會異常緩慢图张,具體的解決方法就是更換linux源即可。

2诈悍、當要以非root用戶可以直接運行docker時祸轮,需要執(zhí)行以下命令:


sudo usermod -aG docker 賬戶名

否則系統(tǒng)會提示以下報錯:


docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?

3、配置docker的鏡像源


// 修改配置文件 /etc/docker/daemon.json

vim /etc/docker/daemon.json

// 加入下面的內(nèi)容:

{

  "registry-mirrors": ["https://registry.docker-cn.com"]

}

// 然后重啟docker服務即可
service docker restart

由于不可描述的原因侥钳,docker的源下載非常慢倔撞,這里使用DaoCloud的源,詳見 https://www.docker-cn.com/registry-mirror

鏡像運行命令

鏡像運行的命令比較復雜慕趴,這里把常用的幾個命令放這里痪蝇,當作案例。

1冕房、運行busybox


// -it 終端交互運行

docker run -it busybox

2躏啰、運行nginx


// -d 守護進程運行

// -p 端口映射

// -v 文件路徑映射

// -- mount type=bind,source=/var/www/html,target=/usr/share/nginx/html,readonly

docker run -d -p 80:80 -v /var/www/html:/usr/share/nginx/html nginx:v2

// 另一種方式

// -- mount 和上面一樣屯耸,也是用于文件映射艳狐,但是有不同的就是如果鏡像里面的文件不存在,

// 則生成容器的時候回報錯锋谐。

// readonly 參數(shù)可以不傳详拙,如果傳了帝际,表示對應容器內(nèi)的文件只讀。

docker run -d -p 80:80 \

    --mount type=bind,source=/var/www/html,target=/usr/share/nginx/html,readonly \

    nginx:v2



// 如果不想指定web容器的端口饶辙,則可以使用 -P(注意這里是大寫) 來隨機映射

docker run -d -P nginx:v2

3蹲诀、啟用一個ubuntu終端


// --rm 容器退出后自動刪除

// --restart=always 自動重啟

// --name 容器名稱 命名容器

docker run -it --rm --restart=always --name myubuntu ubuntu:latest

4、容器互聯(lián)

通過創(chuàng)建一個docker網(wǎng)絡(luò)弃揽,讓兩個容器運行在同一個網(wǎng)絡(luò)中脯爪。


1) 創(chuàng)建一個docker網(wǎng)絡(luò)

docker network create -d bridge my-net

2) 運行一個容器并連接到新建的 my-net 網(wǎng)絡(luò)

docker run -it --rm --name busybox1 --network my-net busybox sh

3) 打開新的終端则北,再運行一個容器并加入到 my-net 網(wǎng)絡(luò)

docker run -it --rm --name busybox2 --network my-net busybox sh

4) 在 busybox1 容器輸入以下命令

/ # ping busybox2

PING busybox2 (172.19.0.3): 56 data bytes

64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms

64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms

// 可以看到在 busybox1 中是能請求到 busybox2 的。

// 同樣痕慢,在 busybox 中也能請求到 busybox1

服務命令

1尚揣、docker的啟動/重啟/關(guān)閉


service docker start/restart/stop

2、安裝Docker管理工具


docker run -d -p 9001:9000 -v "/var/run/docker.sock:/var/run/docker.sock" portainer/portainer

portainer 是一款易用的docker圖形管理工具掖举,地址如下:https://github.com/portainer/portainer

鏡像命令

1快骗、查詢docker鏡像


docker images

2、獲取鏡像


docker pull (鏡像下載地址/鏡像名稱)

3塔次、刪除鏡像


// 通過ID刪除

docker rmi (鏡像ID)

// 通過tag刪除

docker rmi (tag)

// 批量刪除

docker rmi $(docker images | grep "模糊匹配內(nèi)容" | awk '{print $3}')

4方篮、轉(zhuǎn)移鏡像


// 保存鏡像

docker save compose01_web(鏡像名) > t.tar(目標文件)

// 讀取鏡像

docker load --input ./t.tar(讀取的文件)

// 也可以一步到位,直接通過ssh發(fā)送到其他機器

docker save <鏡像名> | bzip2 | pv | ssh <用戶名>@<主機名> 'cat | docker load'

docker可以建立自有鏡像倉庫俺叭,但是一般來說我們還是直接轉(zhuǎn)移會方便一些恭取。

5、安裝私有倉庫


// 獲取倉庫的鏡像

sudo docker pull registry

// 啟動鏡像熄守,將鏡像的存放地址映射為非臨時目錄

sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

// 啟動完成后蜈垮,如果我們直接push鏡像,會出現(xiàn)如下提示:

Error response from daemon: Get https://10.10.239.222:5000/v1/_ping: http: server gave HTTP response to HTTPS client

// 這是由于新版本的docker私有庫要求https傳輸鏡像裕照,所以要進行一些設(shè)置攒发,讓我們能夠正常上傳鏡像。

// 操作步驟如下:

// 打開配置文件 /etc/docker/daemon.json晋南,加入json格式的內(nèi)容

{

  "其他配置": "其他配置", // 這里是演示惠猿,如果已經(jīng)有其他配置,共用一個json

  "insecure-registries": ["10.10.239.222:5000"] // 不要求使用ssl的庫以及端口负间。

}

// 重啟docker即可

service docker restart

此外:不同版本的linux的設(shè)置方式可能有點不同偶妖,具體可以參考這個文檔 https://yeasy.gitbooks.io/docker_practice/content/repository/registry.html

如果需要配置有認證的registry,參考這個文檔:https://yeasy.gitbooks.io/docker_practice/content/repository/registry_auth.html

參考文檔:

6政溃、上傳鏡像


// 上傳鏡像

docker pull

7趾访、查詢鏡像 - 這個命令用于查詢私有的鏡像庫


// 查詢鏡像中存在的分類

curl -X GET http://172.16.9.30:5000/v2/_catalog

// 返回

{"repositories":["busybox"]}

// 查詢鏡像的tag

curl -X GET http://172.16.9.30:5000/v2/busybox/tags/list

// 返回

{"name":"busybox","tags":["latest"]}

具體的API查詢地址:https://docs.docker.com/registry/spec/api/

容器命令

1、查詢當前容器狀態(tài)


docker ps -a

這里可以不帶 -a 董虱,不帶的情況下只查詢當前在運行的容器扼鞋。

2、停止容器運行


docker stop (容器ID)

3愤诱、刪除容器


docker rm (容器ID)

// 批量刪除

docker rm $(docker ps -qa)

// 批量刪除

docker ps -qa | xargs -n 1 docker rm

4云头、進入一個已有容器


$ docker exec -it webserver bash

5、轉(zhuǎn)移容器


// 導出容器

docker export

// 導入容器

docker import

6淫半、清除所有未運行狀態(tài)的容器


docker container prune

7溃槐、設(shè)置容器的dns


// 進入docker的配置文件

cd /etc/docker/daemon.json

// 增加下面的內(nèi)容,然后重啟docker服務

{

  "dns" : [

    "114.114.114.114",

    "8.8.8.8"

  ]

}

// 后續(xù)的容器dns都會從讀取以上配置的dns

docker run -it --rm ubuntu cat etc/resolv.conf

// 輸出

nameserver 114.114.114.114

nameserver 8.8.8.8

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撮慨,一起剝皮案震驚了整個濱河市竿痰,隨后出現(xiàn)的幾起案子脆粥,更是在濱河造成了極大的恐慌砌溺,老刑警劉巖影涉,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異规伐,居然都是意外死亡蟹倾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門猖闪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲜棠,“玉大人,你說我怎么就攤上這事培慌』砺剑” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵吵护,是天一觀的道長盒音。 經(jīng)常有香客問我,道長馅而,這世上最難降的妖魔是什么祥诽? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮瓮恭,結(jié)果婚禮上雄坪,老公的妹妹穿的比我還像新娘。我一直安慰自己屯蹦,他們只是感情好维哈,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著登澜,像睡著了一般阔挠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帖渠,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天谒亦,我揣著相機與錄音,去河邊找鬼空郊。 笑死份招,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的狞甚。 我是一名探鬼主播锁摔,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哼审!你這毒婦竟也來了谐腰?” 一聲冷哼從身側(cè)響起孕豹,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎十气,沒想到半個月后励背,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡砸西,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年叶眉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芹枷。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡衅疙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸳慈,到底是詐尸還是另有隱情饱溢,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布走芋,位于F島的核電站绩郎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏绿聘。R本人自食惡果不足惜嗽上,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熄攘。 院中可真熱鬧兽愤,春花似錦、人聲如沸挪圾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哲思。三九已至洼畅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棚赔,已是汗流浹背帝簇。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留靠益,地道東北人丧肴。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像胧后,于是被迫代替她去往敵國和親芋浮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件壳快?Google Compute Engi...
    ahohoho閱讀 15,534評論 15 147
  • 一 纸巷、什么是 Docker Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國...
    Blazzer閱讀 3,140評論 0 13
  • 0. 前言 docker是什么镇草?docker是用GO語言開發(fā)的應用容器引擎,基于容器化瘤旨,沙箱機制的應用部署技術(shù)梯啤。可...
    sessionboy閱讀 3,854評論 2 49
  • 夜茫茫裆站,風微涼条辟,哪堪寒意襲黔夭? 嚖嚖蕭聲起宏胯,高樓靜聽,觸動心上弦本姥。 望長空肩袍,幽遠幽遠,晦暗難尋路婚惫。 時聞蟋蟀歌氛赐,時看...
    肝兒寶寶閱讀 203評論 0 1
  • 更高級的信息反饋,可以根據(jù)用戶的實際情況先舷,提供更詳細的回復艰管,尤其是重要消息。比如ox下蒋川,用pages打開doc文件...
    freshtime閱讀 124評論 0 0