docker快速上手

docker安裝

安裝請參考docker官網(wǎng):https://docs.docker.com/engine/installation/linux/ubuntulinux/

容器相關命令

  • docker啟動编矾、重啟影晓、關閉
sudo docker start | restart | stop
  • 查看docker程序是否正常工作
sudo docker info
  • 創(chuàng)建一個交互式shell容器益老,并為容器命名,名字可以包含字符:a-z,A-Z,0-9,下劃線,圓點窿冯,橫線。用正則表示[a-zA-Z0-9_.-]
sudo docker run --name first_container -it ubuntu /bin/bash
  • 查看當前系統(tǒng)中的容器列表
docker ps -a
docker ps -a -l #列出最后一次運行的容器
  • 重新啟動已經(jīng)停止的容器
sudo docker start first_container
sudo docker start container_id #也可以用從其id啟動
sudo docker start container_name #重新啟動一個容器
  • 創(chuàng)建守護式容器,使用-d參數(shù)解愤,docker容器會在后臺運行
sudo docker run --name container_name -d ubuntu /bin/bash
  • 停止守護進程
sudo docker stop container_name
  • 獲取守護式容器日志
sudo docker logs container_name
sudo docker logs -f container_name #監(jiān)控docker日志
sudo docker logs --tail 10 container_name #獲取日志最后10行
sudo docker logs --tail 0 -f container_name #跟蹤某個容器的最新日志而不必讀取日志文件
sudo docker logs -ft container_name #-t標志為每條日志加上時間戳骤素,方便調試
  • 查看容器內的進程
sudo docker top container_name
  • 自動重啟容器
sudo cocker run --restart=always --name container_name -d ubutu

--restart:always,on-failure
--restat=on-failure:5,自動嘗試重啟五次

  • 查看容器
sudo docker inspect container_name

docker inspect命令會對容器進行詳細的檢查,然后返回其配置信息异剥,包括名稱瑟由、命令、網(wǎng)絡配置的數(shù)據(jù)冤寿,也可以用-f或者--format標志來選定查看結果歹苦。

sudo docker inspect --format='{{.State.Running}}' container_name
#查看多個容器
sudo docker inspect --format='{{.Name}} {{.State.Running}}' container_name_1 container_name_2

/var/lib/docker目錄存放著docker鏡像、容器以及容器的配置督怜,所有的容器都保存在/var/lib/docker/containers目錄下

  • 刪除容器
sudo docker rm container_name | container_id

運行的docker容器是無法刪除的殴瘦,必須先通過docker stop或者docker kill命令停止容器,才能刪除号杠。

  • 刪除全部容器(-a標志代表列出所有容器蚪腋,-q表示只需要返回容器的ID。)
sudo docker rm `docker ps -a -q`

鏡像相關命令

  • 列出docker鏡像
sudo docker images

本地鏡像都保存在dockers宿主機的/var/lib/docker目錄下究流。鏡像從倉庫下載辣吃,鏡像保存在倉庫中,而倉庫存在于Registry中芬探,默認的Registry是由Docker公司運營的公共Registry服務神得,及Docker Hub

  • 拉取ubuntu鏡像
docker pull ubuntu #拉取鏡像
docker pull ubuntu:14.04 #拉去tag為14.04的鏡像

指定倉庫的標簽是一個好習慣,這樣可以準確的制定容器來源于哪里偷仿。
Docker Hub有兩種倉庫:用戶倉庫和頂層倉庫哩簿,用戶倉庫的鏡像由Docker用戶創(chuàng)建,頂層倉庫由Docker內部人來管理酝静。

  • 查看鏡像
sudo docker images container_name
  • 查找鏡像
sudo docker search container_name
  • 構建鏡像
    1. 創(chuàng)建Docker Hub賬號
    2. 登陸Docker Hub
    sudo docker login
    
    1. 用docker的commit命令創(chuàng)建鏡像
      基于ubuntu鏡像創(chuàng)建一個新鏡像
    #創(chuàng)建一個要進行修改的定制容器
    sudo docker run -i -t ubuntu /bin/bash
    #安裝apache軟件包
    apt-get -yqq update
    apt-get -y install apache2
    #退出當前容器
    #提交定制容器
    sudo docker commit 4aab3ce3cb86 jamtur01/appache2
    #檢查新創(chuàng)建的鏡像
    sudo docker images jamtur01/apache2
    #在提交鏡像時指定更多的數(shù)據(jù)(包括標簽)來詳細描述所做的修改
    sudo docker commit -m="A new custom image" --author="James Turnbull" 4aab3ce3cb76 jamtur01/apache2:webserver
    #使用docker inspect查看新創(chuàng)建的鏡像詳細信息
    sudo docker inspect jamtur01/apache2:webserver
    #從提交的鏡像運行一個新容器
    sudo docker run -t -i jamtur01/apache2:webserver /bin/bash
    
  • 用dockerfile構建鏡像
    并不推薦使用docker commit的方法來構建鏡像节榜,相反推薦使用Dockerfile的定義文件和docker build命令來構建鏡像。Dockerfile使用基于DLS語法的指令來構建一個Docker鏡像别智,之后使用docker build命令基于該dockerfile中的指令構建一個新的鏡像宗苍。步驟:(我們將創(chuàng)建一個包含簡單web服務器的docker鏡像)
    1. 創(chuàng)建一個目錄并在里面創(chuàng)建初始化的Dockerfile
    mkdir static_web
    cd static_web
    touch Dockerfile
    
    1. dockerfile文件內容
    #第一個Dockerfile
    #Version:0.0.1
    FROM ubuntu:14.04
    MAINTAINER James Turnbull "james@example.com"
    RUN apt-get update
    RUN apt-get install -y nginx
    RUN echo 'Hi, I am in your container' > /usr/share/nginx/html/index.html
    expose 80
    
    1. dockerfile指令解釋
      Docker大體按照如下流程執(zhí)行Dockerfile中的指令
      • Docker從基礎鏡像運行一個容器。
      • 執(zhí)行一條指令,對容器做出修改讳窟。
      • 執(zhí)行類似docker commit的操作让歼,提交一個新的鏡像層。
      • Docker在基于剛提交的鏡像運行一個新容器丽啡。
      • 執(zhí)行Dockerfile中的下一條指令谋右,直到所有指令都執(zhí)行完畢。
    2. 基于dockerfile鏡像構建新鏡像
      執(zhí)行docker build命令時补箍,dockerfile中的指令都會被執(zhí)行并且被提交改执,并且在該命令成功結束后返回一個新鏡像。
    #運行Dockerfile
    cd static_web
    sudo docker build  -t="jamtur01/static_web" .
    
    使用docker build命令來構建新鏡像坑雅,通過-t為新鏡像設置了倉庫和名稱辈挂。在本例倉庫為jamtur01,鏡像名為static_web。建議為自己的鏡像設置合適的名字以方便追蹤和管理霞丧。也可以設置標簽呢岗,如:
    sudo docker build -t="jamtur01/static_web:v1" .
    
      上面告訴docker到本地目錄中去找Dockerfile文件,也可以指定一個Git倉庫的源地址來指定Dockerfile的位置蛹尝。
    
    sudo docker build -t="jamtur01/static_web:v1 git@github.com:jamtur01/docker-static_web
    
  • 忽略dockerfile的構建緩存
sudo docker build --no-cache -t="jamtur01/static_web"
  • 查看新鏡像
sudo docker images jamtur01/static_web
  • 查看鏡像如何構建出來的
sudo docker history22d47c8cb3jkk
  • 從新鏡像啟動一個容器
sudo docker run -d -p 80 --name static_web jamtur01/static_web nginx -g "daemon off;"

-d:說明在后臺運行
-p:控制docker在運行時應該公開哪些網(wǎng)絡端口給宿主機,-p還可以靈活的管理容器和宿主機之間的端口映射關系

sudo docker run -d -p 80:80 --name static_web jamtur01/static_web nginx -g "daemon off;"
sudo docker run -d -p 8080:80 --name static_web jamtur01/static_web nginx -g "daemon off;"
#端口限制在特定的IP上
sudo docker run -d -p 127.0.0.1:8080:80 --name static_web jamtur01/static_web nginx -g "daemon off;"

-P:可以用來對外公開在Dockerfile中EXPOSE指令中設置的所有端口

sudo docker run -d -P --name static_web jamtur01/static_web nginx -g "daemon off;"

運行一個容器時后豫,Docker可以通過兩種方法來在宿主機上分配端口。
* Docker可以在宿主機上隨機選擇一個位于49153~65535的一個比較大的端口好來映射到容器中的80端口上突那。
* 可以在Docker宿主機中指定一個具體的端口好來映射到容器中的80端口上挫酿。

  • 查看docker端口映射情況
sudo docker ps -l
##指定要查看映射情況的容器ID和容器的端口號
sudo docker port container_id 80
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市愕难,隨后出現(xiàn)的幾起案子早龟,更是在濱河造成了極大的恐慌,老刑警劉巖猫缭,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葱弟,死亡現(xiàn)場離奇詭異,居然都是意外死亡猜丹,警方通過查閱死者的電腦和手機芝加,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來射窒,“玉大人藏杖,你說我怎么就攤上這事÷龆伲” “怎么了蝌麸?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長艾疟。 經(jīng)常有香客問我来吩,道長敢辩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任弟疆,我火速辦了婚禮责鳍,結果婚禮上,老公的妹妹穿的比我還像新娘兽间。我一直安慰自己,他們只是感情好正塌,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布嘀略。 她就那樣靜靜地躺著,像睡著了一般乓诽。 火紅的嫁衣襯著肌膚如雪帜羊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天鸠天,我揣著相機與錄音讼育,去河邊找鬼。 笑死稠集,一個胖子當著我的面吹牛奶段,可吹牛的內容都是我干的。 我是一名探鬼主播剥纷,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼痹籍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晦鞋?” 一聲冷哼從身側響起蹲缠,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悠垛,沒想到半個月后线定,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡确买,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年斤讥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拇惋。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡周偎,死狀恐怖,靈堂內的尸體忽然破棺而出撑帖,到底是詐尸還是另有隱情蓉坎,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布胡嘿,位于F島的核電站蛉艾,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜勿侯,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一拓瞪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧助琐,春花似錦祭埂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掘譬,卻和暖如春泰演,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葱轩。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工睦焕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人靴拱。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓垃喊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親袜炕。 傳聞我的和親對象是個殘疾皇子缔御,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容