docker 基本命令

docker 筆記(部分)

  • 查看docker的基本信息

docker version

docker info

docker image ls //查看鏡像

docker image rm imageName//刪除imageName

docker container run imageName //run imageName(如果image imageName不存在會去拉取)

docker container ls -a//查看所有container和其狀態

docker container stop containerName or ID //stop container

docker container rm ID //刪除container

docker container start ID//運行一個創建了但是停掉了的container

docker container ps -aq //列出所有container id

docker container stop $(docker container ps -aq) //停止所有的container

不能直接刪除一個run 的container,但是可以-f 強制刪除

容器的兩種模式attached(前臺) detached(后臺)

docker image run -d -p 80:80 nginx //后臺運行detach

docker attach id //detach -->attach

docker container logs id 查看detach的 id的 logs

docker container logs -f id// 動態跟蹤

  • 交互:

docker exec -it ID sh(經常用)//進入一個正在運行的容器內部shell

docker container run -it containerName sh // 創建一個容器并且進入交互式模式

docker container top id

  • docker container run -d --p 80:80 --name 容器別名 nginx

上面命令執行的細節:

1.在本地查找是否有nginx這個image鏡像,但是沒有發現去遠程的image registry查找nginx鏡像(默認的registry是Docker Hub),而且下載最新版本的nginx鏡像 (nginx:latest 默認)

2.基于nginx鏡像來創建一個新的容器,并且準備運行

3.docker engine分配給這個容器一個虛擬IP地址

4.在宿主機上打開80端口并把容器的80端口轉發到宿主機上

5.啟動容器,運行指定的命令(這里是一個shell腳本去啟動nginx)

  • image獲取:

1.docker hub

docker image pull imageName:版本號//拉取image,版本號默認為lasted

docker image inspect imageId // 查看image詳細信息.

docker image rm id(只有coantainer里面也rm 了才可以刪除,stop也不行,或者強制刪除)

2.離線導入導出

docker image save imagename -o filename//將image導出為一個文件

docker image load -i filename

3.dockerfile

docker image build -f dockerfilename -t imageName:tag .(.表示當前目錄)

docekr image push userID/imageName:tag //push自己的image到docker hub.

docker image pull userID/imageName:tage//拉取user的版本為tag的image到本地.

  • docker commit

docker container commint containerID imageName:tag //將一個container 打包成一個image(用的少)

  • scratch

是一個空的鏡像,什么都沒有

dockerfile

鏡像選擇原則

官方鏡像優于非官方的鏡像,如果沒有官方鏡像,則盡量選擇Dockerfile開源的

固定版本tag而不是每次都使用latest

盡量選擇體積小的鏡像

docker image build -f dockerFileNmae -t imageName .//將dockerFileName 構建為名字為imageName的鏡像 .表示當前路徑

  • FROM 選擇基礎鏡像

  • RUN 主要用于在Image里執行指令,比如安裝軟件,下載文件等。盡量把語句寫一個run里面

  • 文件復制和目錄操作,COPY ADD

把本地的一個文件復制到鏡像里,如果鏡像沒有目標文件,則會自動創建。比如把本地的 hello.py 復制到 /app 目錄下。 /app這個鏡像不存在,則會自動創建。

ADD和COPY區別就是復制的是一個gzip等壓縮文件時,ADD會幫助我們自動去解壓縮文件。需要自動解壓縮的場合使用 ADD。

  • WORKDIR: 切換當前鏡像的目錄,如果不存在就創建目錄
  • ENV ARG 環境變量

ENV 設置的變量可以在Image中保持,并在容器中的環境變量里

ARG 可以在鏡像build的時候動態修改value, 通過 --build-arg

  • 容器啟動命令CMD ENTRYPOINT:CMD可以用來設置容器啟動時默認會執行的命令。

注意:如果docker container run啟動容器時指定了其它命令,則CMD命令會被忽略并且如果定義了多個CMD,只有最后一個會被執行。但是ENTRYPOINT一定會執行**

  • DockerFile 技巧

1.合理使用緩存,把改變的盡量放到后面。

2.合理使用 .dockerignore

3.鏡像的多階段構建

4.盡量使用非root用戶

docker的存儲

Docker主要提供了兩種方式做數據的持久化

  • Data Volume, 由Docker管理, 持久化數據的最好方式
  • Bind Mount,由用戶指定存儲的數據具體mount在系統什么位置

docker volume ls //查看volume DIRVER 和 VOLUMENAME

docker volume inspect VOLUMENAME //查看volume詳細信息

dcoker volume prune //一次性刪除所有volume

docekr container run -v localDir:containerDir imageName //把本地文件作為volume映射到容器。(如果兩個不同的容器映射同一個本地的文件,在A容器里面修改volume對B容器可見)

Bind Mount

用戶自己指定host機器的目錄mount到container中。但是bind mount在不同的宿主機系統時不可移植的,比如Windows和Linux的目錄結構是不一樣的,bind mount所指向的host目錄也不能一樣。所以bind mount不能出現在Dockerfile中的原因,因為這樣Dockerfile就不可移植了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容

  • 課程鏈接:https://www.imooc.com/video/15640 Linux安裝docker命令 wg...
    三忌閱讀 252評論 0 0
  • Docker 筆記來源:https://docs.docker.com/ 和 《docker 容器和容器云》 此筆...
    WunHwan閱讀 431評論 0 2
  • 摘自《Docker 容器與容器云(第2版)》點擊查看我的博客原文 1. 從容器到容器云 1.1 云計算平臺 經典云...
    蘇易北閱讀 2,188評論 0 6
  • 1、Docker簡介 開源的應用容器引擎 打包環境和應用到一個輕量級,可移植的容器中,發布到任何 Linux 機器...
    Assassin007閱讀 292評論 0 0
  • docker概念 鏡像與容器 docker鏡像是一個統一文件系統,由一系列只讀層堆疊而成。容器則是在只讀層堆頂加上...
    羽色云煙閱讀 760評論 0 0