Docker極簡教程 高階

2021-08-31 06:57:06 字數 3455 閱讀 1783

建立檔案dockerfile檔案,該檔名不可更改

vi dockerfile
寫入文字

from alpine:latest

maintainer smilevt

cmd echo "hello docker!

儲存退出

docker build命令用於使用 dockerfile 建立映象,

docker build -t hello_docker .
執行結果:

檢視是否成功建立映象並執行

再次新建資料夾並新建dockerfile檔案,寫入以下內容;

簡單說一下文字含義:從(from)ubuntu容器中執行(run)3條命令,第一條是修改archive.ubuntu.com為mirrors.ustc.edu.cn國內映象,第

二、三條是安裝nginx,然後複製(copy)index.html到容器內,提供容器進入點(entrypoint),使nginx在前台執行,之所以使用陣列是為了隔開命令,最後暴露80埠。

接下來新建index.html檔案,執行build命令建立映象:

使用run命令啟動該hello-nginx容器:

docker run -p 8080:80 -d hello-nginx:tag
測試訪問host:8080埠如下:

可以看到,nginx成功啟動,並輸出自定義的index.html。

命令用途

from

base image

run執行命令

add新增檔案

copy

拷貝檔案

cmd執行檔案

expose

暴露埠workdir

指定路徑

maintainer

維護者env

設定環境

entrypoint

容器入口

user

指定使用者

volume

mount point

dockerfile的每一行都會產生乙個新層(新id),比如:

已經存在image裡面的層是唯讀的,一旦映象執行為容器之後,就會產生乙個新層(rw讀寫),分層的好處就是多個image可以共享相同的層,減少儲存大小。

我們知道,docker容器中的改動是不會被儲存的,為了能夠儲存(持久化)資料以及共享容器間的資料,docker提出了volume的概念。簡單來說,volume就是目錄或者檔案,它可以繞過預設的聯合檔案系統,而以正常的檔案或者目錄的形式存在於宿主機上。 比如在使用資料庫時就可以使用volume。

說白了,volume只是-v引數而已。容器和宿主機目錄掛載的三種方式:

docker run -d --name nginx -v /usr/share/nginx/html nginx
獲取容器/映象的元資料

docker inspect nginx
可以看到宿主機目錄source和容器內目錄destination:

注意:如果是mac,則該路徑不是mac上的實際路徑,因為mac上執行docker是還有一層虛擬層,這是docker虛擬層中的路徑,可以在docker中訪問到

在啟動nginx容器時使用-v引數掛載本地目錄到容器目錄

docker run -p 8080:80 --name mynginx -v $pwd:/usr/share/nginx/html -d nginx
這句命令使用pwd環境變數(該變數始終指向當前目錄)將當前目錄掛載到容器/usr/share/nginx/html目錄。

我們訪問主機8080埠

報錯403,因為當前目錄啥也沒有,沒有index.html檔案。在當前目錄新建該html檔案,輸入hello,訪問網頁

使用 docker create 建立乙個新的容器但不啟動它:

docker create -v $pwd/data:/var/mydata --name data_container ubuntu
啟動 ubuntu 容器映象(預設ubuntu基礎映象沒有服務):

docker run -it --volumes-from data_container ubuntu /bin/bash
進入到容器控制台後輸入mount,檢視掛載:

我們在/var/mydata目錄下新建whatever.txt檔案後退出,進入data目錄檢視,可以看到剛剛新建的txt檔案。

關注後端技術精選,每天推送優質好文

Docker極簡入門

我有幾張阿里雲幸運券分享給你,用券購買或者公升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,馬上就要搶光了。root chatdevops yum y install docker root chatdevops docker version docker version ...

Shell 極簡教程

vim hello world.sh bin bash echo hello world chmod x sh hello world.sh hello,world bin bash echo hello,world a 1b expr a 1 echo b注意,變數名和等號之間不能有空格,這可能和...

crontab極簡教程

toc crontab簡介 linux crontab是用來定期執行程式的命令。當安裝完成作業系統之後,預設便會啟動此任務排程命令。crontab常用命令 crontab e 開啟vi編輯器,編寫乙個定時任務,退出vi後,若vi內容不為空,則會建立乙個任務。crontab l 檢視當前已經建立的定時...