建立檔案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 檢視當前已經建立的定時...