最近由于工作上又用到了Docker,所以在此重新整理了下整體Docker的入門基礎(chǔ)知識(shí)
Docker install
以ubuntu下的安裝方式為例:
- 更新軟件源
sudo apt-get update
- 下載Docker
sudo apt-get install docker.io
- 把當(dāng)前用戶加入到docker用戶組中(Docker默認(rèn)只能以root用戶運(yùn)行)
sudo gpasswd -a ${USER} docker
-
當(dāng)前用戶退出系統(tǒng)重新登錄
su root
su ${USER} - 驗(yàn)證Docker是否安裝成功
service docker status
- 看到命令行中顯示Docker是running狀態(tài)則證明安裝成功!
Docker image
- 查詢目前有多少個(gè)鏡像源
docker images
- 從官方鏡像倉庫中拉取鏡像
docker pull ${image name}:${version} 不寫版本默認(rèn)是latest
如:docker pull ubuntu 或者 docker pull ubuntu:16.04
- 從本地鏡像倉庫導(dǎo)出鏡像
docker save -o [file path/filename] [image name]
- 從某個(gè)文件中導(dǎo)入鏡像
docker load > [file path/filename]
Docker container
- 查詢目前有多少個(gè)容器運(yùn)行
docker ps
- 根據(jù)某個(gè)鏡像開啟一個(gè)容器
docker run [Options] -it ${image name} [command] [args...]
Options:增加的一些額外參數(shù)媳搪,可不要,如 docker run -it ubuntu /bin/bash
-p:容器端口與宿主主機(jī)的端口映射關(guān)系,后面的是容器的端口,如docker run -p 10.23.1.198:18888:18888 -it achain-wallet /bin/bash
-d:是否以后臺(tái)進(jìn)程的方式運(yùn)行該容器
-v:掛在宿主主機(jī)的目錄到對(duì)應(yīng)的容器目錄中芬膝,注意只能是絕對(duì)路徑的癣缅,如 docker run -v /home/yujian:/data/soft -it /bin/bash
Dockerfile
Dockerfile命令
- ADD
ADD命令有兩個(gè)參數(shù),源和目標(biāo)檩坚。它的基本作用是從源系統(tǒng)的文件系統(tǒng)上復(fù)制文件到目標(biāo)容器的文件系統(tǒng)。如果源是一個(gè)URL薯鳍,那該URL的內(nèi)容將被下載并復(fù)制到容器中.
ADD [source directory or URL] [destination directory]
如:ADD /my_app_folder /my_app_folder
- CMD
和RUN命令相似咖气,CMD可以用于執(zhí)行特定的命令。和RUN不同的是挖滤,這些命令不是在鏡像構(gòu)建的過程中執(zhí)行的崩溪,而是在用鏡像構(gòu)建容器后被調(diào)用.
CMD application "argument", "argument", ..
CMD "echo" "Hello docker!"
- EXPOSE
用來指定端口,使容器內(nèi)的應(yīng)用可以通過端口和外界交互
EXPOSE [port] 多個(gè)之間以空格隔開
如:EXPOSE 8080
- ENTRYPOINT
配置容器啟動(dòng)后執(zhí)行的命令斩松,并且不可被 docker run 提供的參數(shù)覆蓋.每個(gè) Dockerfile 中只能有一個(gè) ENTRYPOINT伶唯,當(dāng)指定多個(gè)時(shí),只有最后一個(gè)起效.ENTRYPOINT 幫助你配置一個(gè)容器使之可執(zhí)行化惧盹,如果你結(jié)合CMD命令和ENTRYPOINT命令乳幸,你可以從CMD命令中移除“application”而僅僅保留參數(shù)瞪讼,參數(shù)將傳遞給ENTRYPOINT命令。
ENTRYPOINT application "argument", "argument", ..
如:# Remember: arguments are optional. They can be provided by CMD or during the creation of a container.
ENTRYPOINT echo
#Usage example with CMD:
#Arguments set with CMD can be overridden during run
#Arguments set with CMD can be overridden during run
CMD "Hello docker!"
ENTRYPOINT echo
- RUN
RUN命令是Dockerfile執(zhí)行命令的核心部分粹断。它接受命令作為參數(shù)并用于創(chuàng)建鏡像符欠。不像CMD命令,RUN命令用于創(chuàng)建鏡像(在之前commit的層之上形成新的層)瓶埋。
RUN [command]
如:RUN apt-get install -y vim
- FROM
FROM命令必須是Dockerfile的首個(gè)命令,用于指定使用哪個(gè)基礎(chǔ)鏡像作為構(gòu)建流程希柿,該基礎(chǔ)鏡像一般是要能從官方倉庫中找得到的
FROM [image name]
如:FROM ubuntu
- ENV
ENV命令用于設(shè)置環(huán)境變量。這些變量以”key=value”的形式存在养筒,并可以在容器內(nèi)被腳本或者程序調(diào)用
ENV key value
如:ENV SERVER_WORKS 4
- VOLUME
VOLUME命令用于讓你的容器訪問宿主機(jī)上的目錄
VOLUME ["/dir_1", "/dir_2" ..]
如:VOLUME ["/my_files"]
- WORKDIR
WORKDIR命令用于設(shè)置CMD指明的命令的運(yùn)行目錄
WORKDIR /path
如:WORKDIR ~/