成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Docker 快速上手學(xué)習(xí)入門教程

leanxi / 2135人閱讀

摘要:各組件結(jié)構(gòu)下載安裝啟動(dòng)的官方文檔上提供了非常詳細(xì)的安裝流程,簡單摘錄在上下載社區(qū)版并安裝的操作命令當(dāng)控制臺輸出加一大段介紹文字時(shí),安裝就大功告成了。

原文鏈接:http://tabalt.net/blog/docker...

Docker是一個(gè)使用Golang開發(fā)的開源應(yīng)用容器引擎,讓開發(fā)者可以打包應(yīng)用和依賴到一個(gè)輕量級、可移植的鏡像中,然后分發(fā)到任何流行的Linux機(jī)器上,并在這些機(jī)器上啟動(dòng)容器,容器之間隔離獨(dú)立,資源消耗低。

Docker的常見概念

鏡像 Image

鏡像是一個(gè)分層的文件系統(tǒng),集成了容器運(yùn)行時(shí)所需的操作系統(tǒng)、應(yīng)用程序、運(yùn)行時(shí)環(huán)境等;鏡像是只讀的,構(gòu)建之后內(nèi)容不會(huì)被改變,可被復(fù)制和分發(fā)。

容器 Container

容器是由鏡像啟動(dòng)的運(yùn)行時(shí)實(shí)例,可被啟動(dòng)、停止、刪除,容器之間相互隔離,容器對資源的使用可以做限制。容器從鏡像啟動(dòng)時(shí),Docker會(huì)在鏡像的上層創(chuàng)建一個(gè)可寫層。

鏡像倉庫 Image Repository

鏡像倉庫類似于代碼倉庫,用來集中存放鏡像文件。鏡像編譯好后推送(push)到倉庫中,在運(yùn)行容器的機(jī)器上拉?。╬ull)下來即完成了鏡像的復(fù)制和分發(fā)。

Dockerfile

Dockerfile是由一系列命令和參數(shù)構(gòu)成的腳本,這些命令基于基礎(chǔ)鏡像,將業(yè)務(wù)需要的應(yīng)用程序和依賴環(huán)境打包起來,并最終創(chuàng)建一個(gè)新的鏡像。

客戶端Client和守護(hù)進(jìn)程Daemon

Docker是C/S(客戶端Client-服務(wù)器Server)架構(gòu)模式,客戶端是名為docker的命令行工具,服務(wù)器是名為dockerd的守護(hù)進(jìn)程,用戶通過客戶端向服務(wù)器提供的接口發(fā)送請求和指令,守護(hù)進(jìn)程執(zhí)行一系列操作后返回給客戶端結(jié)果。

Docker各組件結(jié)構(gòu)

下載&安裝&啟動(dòng) Docker

Docker的官方文檔(https://docs.docker.com/install/ )上提供了非常詳細(xì)的安裝流程,簡單摘錄在CentOS 7.x 上下載Docker社區(qū)版并安裝的操作命令:

mkdir ~/soft && cd ~/soft
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86_64.rpm

sudo yum install docker-ce-18.06.1.ce-3.el7.x86_64.rpm
sudo systemctl start docker
sudo docker run hello-world

當(dāng)控制臺輸出Hello from Docker!加一大段介紹文字時(shí),安裝就大功告成了。

運(yùn)行Docker的Hello World容器的一些細(xì)節(jié)

剛剛我們成功運(yùn)行了Docker提供的Hello World版容器,大致的執(zhí)行過程如下:

命令行執(zhí)行的Docker客戶端程序,解析出命令run和參數(shù)hello-world,并請求Docker Daemon守護(hù)進(jìn)程提供的相關(guān)接口

Docker Daemon得到要將名為hello-world的鏡像啟動(dòng)為容器的請求后,嘗試在本地查找名為hello-world的鏡像

因?yàn)槲覀兪莿偘惭b的Docker,本地并沒有這個(gè)鏡像,Docker Daemon會(huì)嘗試從官方鏡像倉庫拉取名為hello-world的鏡像

名為hello-world的鏡像拉取到本地后,Docker Daemon再真正執(zhí)行啟動(dòng)容器的操作

容器啟動(dòng)起來后,執(zhí)行構(gòu)建鏡像時(shí)指定的/hello程序,輸出Hello from Docker!等介紹文字

介紹文字輸出完畢后,/hello程序就退出了,Docker容器也跟著退出

上述流程中,我們的Docker Daemon程序自動(dòng)拉取了hello-world鏡像,也可以通過命令先行拉取下來:

sudo docker pull hello-world

通過下面的命令可以查看本地的鏡像列表:

[tabalt@dev ~]$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              2cb0d9787c4d        6 weeks ago         1.85kB

容器運(yùn)行完退出后,其實(shí)還有殘留,可通過如下命令看到:

[tanyanping@p10992v ~]$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
bb61ae864566        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       modest_cray
Dockerfile 指令介紹

Dockerfile由一行行的命令語句組成,支持以 # 開頭的注釋,主要有四個(gè)部分:基礎(chǔ)鏡像信息、維護(hù)者信息、鏡像操作指令、容器啟動(dòng)指令。 主要指令列舉如下(加*表示常用):

指令 作用 格式 說明
FROM* 指定基礎(chǔ)鏡像 FROM
FROM :
首條指令必須為FROM
可使用多個(gè)FROM 創(chuàng)建多個(gè)鏡像
MAINTAINER 指定維護(hù)者 MAINTAINER
ENV* 指定環(huán)境變量 ENV 后續(xù)RUN指令和容器中可用
USER 指定運(yùn)行容器的用戶 USER daemon 用戶名或UID,對后續(xù)的RUN指令生效
WORKDIR 指定工作目錄 WORKDIR /path/to/workdir 對后續(xù)RUN、CMD、ENTRYPOINT指令生效
VOLUME 創(chuàng)建掛載點(diǎn) VOLUME ["/data"]
ONBUILD 作為基礎(chǔ)鏡像時(shí)的指令 ONBUILD [INSTRUCTION]
RUN* 執(zhí)行命令 RUN
RUN ["executable", "param1", "param2"]
前者為/bin/sh -c執(zhí)行
后者使用 exec 執(zhí)行
命令較長時(shí)可用換行
ADD* 復(fù)制文件到容器 ADD 路徑或URL,tar文件自動(dòng)解壓
COPY* 復(fù)制文件到容器 COPY 源目錄為本地目錄時(shí),推薦使用
ENTRYPOINT* 容器啟動(dòng)后執(zhí)行的命令 ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2
不可被docker run的參數(shù)覆蓋
多條命令只有最后一條生效
CMD* 容器啟動(dòng)執(zhí)行的命令 CMD ["executable","param1","param2"]
CMD command param1 param2
CMD ["param1","param2"]
第一種使用exec執(zhí)行,推薦使用
第二種在/bin/sh中執(zhí)行,支持交互
第三種是ENTRYPOINT的默認(rèn)參數(shù)
多條CMD命令只有最后一條生效
EXPOSE* 指定暴露的端口號 EXPOSE [...]

可以通過幾個(gè)知名項(xiàng)目中的Dockerfile文件來學(xué)習(xí)一下各個(gè)指令的應(yīng)用:

Ethereum Golang項(xiàng)目:https://github.com/ethereum/g...

Nginx Dockerfiles:https://github.com/nginxinc/d...

CentOS Dockerfiles:https://github.com/CentOS/Cen...

Dockerfile編譯成鏡像并運(yùn)行

編寫一個(gè)能編譯運(yùn)行并輸出Hello Docker!的Dockerfile:

[tabalt@dev ~]$ cd ~/docker/hello-docker/
[tabalt@dev ~/docker/hello-docker]$ cat Dockerfile
FROM alpine:latest

CMD echo "Hello World!"

將Dockerfile編譯成名為hello-docker的鏡像:

[tabalt@dev ~/docker/hello-docker]$ sudo docker build -t hello-docker:latest ./
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM alpine:latest
latest: Pulling from library/alpine
8e3ba11ec2a2: Already exists 
Digest: sha256:7043076348bf5040220df6ad703798fd8593a0918d06d3ce30c6c93be117e430
Status: Downloaded newer image for alpine:latest
 ---> 11cd0b38bc3c
Step 2/2 : CMD echo "Hello World!"
 ---> Running in 28dc89adf3d5
Removing intermediate container 28dc89adf3d5
 ---> 5614b1e6b7eb
Successfully built 5614b1e6b7eb
Successfully tagged hello-docker:latest

[tabalt@dev ~/docker/hello-docker]$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-docker        latest              5614b1e6b7eb        22 seconds ago      4.41MB
alpine              latest              11cd0b38bc3c        7 weeks ago         4.41MB

運(yùn)行名為hello-docker的鏡像:

[tabalt@dev ~/docker/hello-docker]$ sudo docker run -i -t --rm --net=host hello-docker:latest
Hello World!
Docker客戶端常用命令

前面已經(jīng)見識過Docker的一些客戶端命令及用法,接下來再看看一些常用命令的詳細(xì)介紹:

docker version

客戶端和服務(wù)端 版本信息

docker info

鏡像數(shù)、容器數(shù)、配置等系統(tǒng)信息

docker search

從Docker Hub中搜索符合條件的鏡像

docker search [OPTIONS] TERM

Options:
    -f, --filter filter   根據(jù)提供的條件過濾輸出
    --format string   用Go模板語法格式化打印的搜索結(jié)果
    --limit int       搜索結(jié)果最大條數(shù)(默認(rèn) 25)
    --no-trunc        顯示完整輸出

docker pull

從Docker Hub中拉取或者更新指定鏡像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Options:
-a, --all-tags                下載倉庫中所有打TAG的鏡像
  --disable-content-trust   跳過鏡像驗(yàn)證(默認(rèn)開啟)
  --platform string         如服務(wù)器具有多平臺功能,可設(shè)置平臺

docker login

登錄Docker Hub,需要輸入用戶名、密碼、郵箱

docker logout

退出登錄

docker images

列出鏡像

docker images [OPTIONS] [REPOSITORY[:TAG]]

Options:
    -a, --all             顯示所有鏡像(默認(rèn)隱藏中間鏡像)
        --digests         顯示摘要
    -f, --filter filter   根據(jù)提供的條件過濾輸出
        --format string   用Go模板語法格式化打印的搜索結(jié)果
        --no-trunc        顯示完整輸出
    -q, --quiet           只顯示數(shù)字ID

docker ps

列出容器

docker ps [OPTIONS]

Options:
    -a, --all             顯示所有容器(默認(rèn)只顯示運(yùn)行中的)
    -f, --filter filter   根據(jù)提供的條件過濾輸出
        --format string   用Go模板語法格式化打印的搜索結(jié)果
    -n, --last int        顯示最新創(chuàng)建的n個(gè)容器(包含所有狀態(tài))(默認(rèn)為-1)
    -l, --latest          顯示最新創(chuàng)建的容器(包含所有狀態(tài))
        --no-trunc        顯示完整輸出
    -q, --quiet           只顯示數(shù)字ID
    -s, --size            顯示文件總大小

docker rmi

刪除鏡像

docker rmi [OPTIONS] IMAGE [IMAGE...]

Options:
    -f, --force      強(qiáng)制刪除鏡像
    --no-prune   不要?jiǎng)h除未打Tag的父鏡像

docker rm

刪除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]

Options:
    -f, --force     強(qiáng)制刪除運(yùn)行中的容器(使用SIGKILL)
    -l, --link      刪除指定的鏈接
    -v, --volumes   刪除與容器關(guān)聯(lián)的卷

docker history

查看鏡像創(chuàng)建歷史

docker history [OPTIONS] IMAGE

Options:
        --format string   用Go模板語法格式化打印的搜索結(jié)果
    -H, --human           以人類可讀格式打印尺寸和日期(默認(rèn)為true)
        --no-trunc        顯示完整輸出
    -q, --quiet           只顯示數(shù)字ID

docker start|stop|restart

啟動(dòng)、停止和重啟一個(gè)或多個(gè)指定容器

docker kill

殺死一個(gè)或多個(gè)指定容器

docker events

從服務(wù)器拉取動(dòng)態(tài)

docker save

將指定鏡像保存成 tar 歸檔文件

docker load

從 tar 鏡像歸檔中載入鏡像

docker export

將指定的容器保存成 tar 歸檔文件

docker import

從歸檔文件(支持遠(yuǎn)程文件)創(chuàng)建一個(gè)鏡像

docker top

查看一個(gè)正在運(yùn)行容器的進(jìn)程,支持 ps 命令參數(shù)。

docker inspect

檢查鏡像或者容器的參數(shù),默認(rèn)返回 JSON 格式。

docker pause

暫停某一容器的所有進(jìn)程。

docker unpause

恢復(fù)某一容器的所有進(jìn)程。

docker tag

標(biāo)記本地鏡像,將其歸入某一倉庫

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

docker push

將鏡像推送至遠(yuǎn)程倉庫,默認(rèn)為 Docker Hub

docker logs

獲取容器運(yùn)行時(shí)的輸出日志

docker run

啟動(dòng)一個(gè)容器,在其中運(yùn)行指定命令。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Options:
-a      stdin 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型,可選 STDIN、STDOUT、STDERR 三項(xiàng)
-d      后臺運(yùn)行容器,并返回容器ID;
-i      以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;
-t      為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用;
--name="nginx-lb"           為容器指定一個(gè)名稱;
--dns 8.8.8.8               指定容器使用的DNS服務(wù)器,默認(rèn)和宿主一致;
--dns-search example.com    指定容器DNS搜索域名,默認(rèn)和宿主一致;
-h "mars"                   指定容器的hostname;
-e username="ritchie"       設(shè)置環(huán)境變量;
--env-file=[]               從指定文件讀入環(huán)境變量;
--net="bridge"              指定容器的網(wǎng)絡(luò)連接類型,支持 bridge、host、none

# 更多參數(shù)請查看 docker help run

更多資料

Docker聯(lián)合文件系統(tǒng):http://www.dockerinfo.net/175...

Docker文檔:https://docs.docker.com/

Kubernetes工作原理:https://www.zhihu.com/questio...

從零開始k8s:https://www.kubernetes.org.cn...

busybox:https://busybox.net/

alpine:https://www.alpinelinux.org/

原文鏈接:http://tabalt.net/blog/docker...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27431.html

相關(guān)文章

  • Rancher 2.0快速上手指南

    摘要:而用戶能在同一平臺上管理任何集群,輕松地充分利用的強(qiáng)大能力及其迅速壯大的生態(tài)系統(tǒng)。在本指南中,你將會(huì)了解如何快速上手。環(huán)境中的所有主機(jī)必須允許彼此間的流量能夠進(jìn)行跨主機(jī)聯(lián)網(wǎng)。這一過程需要幾分鐘完成。如果服務(wù)正常,將會(huì)顯示狀態(tài)為綠色。 大家好,給大家介紹一下,這是幫助大家率先上手嘗試Rancher 2.0的神器 @Rancher 2.0快速上手指南 內(nèi)容導(dǎo)讀 準(zhǔn)備一臺Linux主機(jī) 啟...

    xiaodao 評論0 收藏0
  • Rancher 2.0快速上手指南

    摘要:而用戶能在同一平臺上管理任何集群,輕松地充分利用的強(qiáng)大能力及其迅速壯大的生態(tài)系統(tǒng)。在本指南中,你將會(huì)了解如何快速上手。環(huán)境中的所有主機(jī)必須允許彼此間的流量能夠進(jìn)行跨主機(jī)聯(lián)網(wǎng)。這一過程需要幾分鐘完成。如果服務(wù)正常,將會(huì)顯示狀態(tài)為綠色。 大家好,給大家介紹一下,這是幫助大家率先上手嘗試Rancher 2.0的神器 @Rancher 2.0快速上手指南 內(nèi)容導(dǎo)讀 準(zhǔn)備一臺Linux主機(jī) 啟...

    hufeng 評論0 收藏0
  • Laravel 教程 - 實(shí)戰(zhàn) iBrand 開源電商 API 系統(tǒng)

    摘要:最佳實(shí)踐良好的編碼規(guī)范單元測試持續(xù)集成文檔,從一開始就形成良好的編碼習(xí)慣。真實(shí)的電商業(yè)務(wù)所有的業(yè)務(wù)需求來自真實(shí)的客戶,并且線上良好運(yùn)營中。 重要通知: Laravel + 小程序的開源電商版本源碼已經(jīng)在 github 上拉,歡迎提交 issue 和 star :) 開源電商 Server 端: Laravel API源碼 開源電商 client 端:小程序源碼 iBrand 簡介...

    iOS122 評論0 收藏0
  • 賈揚(yáng)清撰文詳解Caffe2:從強(qiáng)大的新能力到入門上手教程

    摘要:英偉達(dá)作為的開發(fā)合作者,計(jì)劃對的深度學(xué)習(xí)應(yīng)用推出一系列博客文章。可使用的英偉達(dá)深度學(xué)習(xí)庫和來實(shí)現(xiàn)高性能多加速訓(xùn)練和推理。最近的訓(xùn)練基準(zhǔn)使用了塊的英偉達(dá)和神經(jīng)網(wǎng)絡(luò)架構(gòu)。 昨天,F(xiàn)acebook 推出了 Caffe2,一個(gè)兼具表現(xiàn)力、速度和模塊性的開源深度學(xué)習(xí)框架。它沿襲了大量的 Caffe 設(shè)計(jì),可解決多年來在 Caffe 的使用和部署之中發(fā)現(xiàn)的瓶頸問題。最終,Caffe2 打開了算法實(shí)驗(yàn)和新...

    galois 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<