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

資訊專欄INFORMATION COLUMN

Docker容器學(xué)習(xí)筆記1

mingde / 1180人閱讀

摘要:查看,則可以看到成功了一個(gè)執(zhí)行命令則可以查看鏡像的層級(jí)執(zhí)行命令鏡像標(biāo)簽名則可以生成一個(gè)運(yùn)行程序。

Docker容器 概述 1、之前項(xiàng)目的部署方式的缺點(diǎn)

通過物理機(jī)方式部署,如圖所示

部署非常慢

成本非常高

資源浪費(fèi)

難于遷移和擴(kuò)展

可能會(huì)被限定硬件廠商

2、虛擬化技術(shù)的出現(xiàn)

通過虛擬化的技術(shù),我們可以使用一臺(tái)物理機(jī)部署多個(gè)app,每個(gè)app獨(dú)立運(yùn)行在一個(gè)VM里

虛擬化技術(shù)的優(yōu)點(diǎn):

資源池 ———— 一個(gè)物理機(jī)的資源分配到了不同的虛擬機(jī)里

很容易擴(kuò)展 ———— 加物理機(jī)器or加虛擬機(jī)

很容易云化 ———— 亞馬遜AWS,阿里等

虛擬化的局限性

每一個(gè)虛擬機(jī)都是一個(gè)完整的操作系統(tǒng),要給其分配資源,當(dāng)虛擬機(jī)數(shù)量增多時(shí),操作系統(tǒng)本身消耗的資源勢(shì)必增多

3、容器技術(shù)的出現(xiàn)

容器解決了什么問題?

解決了開發(fā)和運(yùn)維之間的矛盾

在開發(fā)和運(yùn)維之間搭建了一個(gè)橋梁,是實(shí)現(xiàn)devops最佳解決方案

什么是容器?

對(duì)軟件和其依賴的標(biāo)準(zhǔn)化打包

應(yīng)用之間相互隔離

共享同一個(gè)OS Kernel

可以運(yùn)行在很多主流操作系統(tǒng)上

注:容器和虛擬機(jī)的區(qū)別在于容器是APP層面的隔離,而虛擬化是物理資源層面的隔離

Docker的架構(gòu)和底層技術(shù) Docker Platform

Docker提供了一個(gè)開發(fā),打包,運(yùn)行app的平臺(tái)

把a(bǔ)pp和底層infrastructure隔離開來

其三層模型如圖:

Docker Engine

后臺(tái)進(jìn)行(dockerd)

REST API Server

CLI接口(docker)

底層技術(shù)支持

其主要利用Linux的底層技術(shù)

Namespaces:做隔離pid,net,ipc,mnt,uts

Control groups:做資源限制

Union file systems:Container和image的分層

Docker Image概述 什么是Image

文件和meta data的集合(root filesystem)

分層的,并且每一層都可以添加改變刪除文件,成為一個(gè)新的image

不同的image可以共享相同的layer

Image本身是read-only的

Image的獲取

方式1:Build from Dockerfile

方式2:Pull from Registry

例如:輸入命令 sudo docker pull ubuntu:14.04,則會(huì)從Registry中拉出Image,Registry類似于github的作用,默認(rèn)都是從docker hub上面拉取,上面會(huì)有官方和第三方的版本

輸入命令 sudo docker image ls則可以顯示所拉去的Image

如何做一個(gè)自己的Base Image

1.首先創(chuàng)建一個(gè)可以執(zhí)行的程序,下面用一個(gè)C語言的hello程序做例子

2.通過dockerfile把這個(gè)可執(zhí)行文件打成一個(gè)Image
我們?cè)趆ellow文件當(dāng)前目錄下創(chuàng)建一個(gè)Dockerfile文件,如下:

3.執(zhí)行命令:docker build -t yunduan/hello-world . (-t表示指示表情,"."表示在當(dāng)前路徑下尋找dockerfile),執(zhí)行以后,出現(xiàn)如下界面表示執(zhí)行成功。

4.查看image,則可以看到成功build了一個(gè)image,執(zhí)行命令docker history +[IMAGE ID]則可以查看鏡像的層級(jí)
,執(zhí)行命令docker run + [鏡像標(biāo)簽名]則可以生成一個(gè)container運(yùn)行程序。

Docker Container概述 什么是Container

通過Image創(chuàng)建(copy)

在Image layer之上建立一個(gè)container layer(可讀寫)

類比面向?qū)ο螅侯惡蛯?shí)例

Image負(fù)責(zé)app的存儲(chǔ)和分發(fā),Container負(fù)責(zé)運(yùn)行app

Container相關(guān)命令

查詢container狀態(tài) docker container ls -a

創(chuàng)建容器 docker run centos

創(chuàng)建容器 docker run -it centos

移除容器 docker container rm + [container ID]

移除鏡像 docker image rm + [image ID]

顯示所有containerID docker container ls -aq

移除所有的container docker rm $(docker container ls -aq)

構(gòu)建自己的Docker鏡像

命令一:docker container commit(Create a new image from a container"s changes)

這個(gè)命令表示當(dāng)你在容器中做出了改變之后,可以重新構(gòu)建Image

通過這個(gè)例子可以看出,其就在centos鏡像上重新構(gòu)建了一層

命令二:docker image build(Build an image from a Dockerfile)

Dockerfile語法梳理

FROM

原則:盡量使用官方的image作為base image!

FROM scratch #制作base image
FROM centos  #使用base image
FROM ubuntu:14.04

LABEL

原則:Metadata不可少!相當(dāng)于代碼的注釋

LABEL maintainer="[email protected]"
LABEL version="1.0"
LABEL description="This is description"

RUN

作用:執(zhí)行命令并創(chuàng)建新的Image Layer

原則:為了美觀,復(fù)雜的RUN請(qǐng)用反斜線換行!避免無用分層,合并多條命令成一行!

RUN yum update && yum install -y vim 
     python-dev   #反斜線換行
RUN apt-get update && apt-get install -y perl 
    pwgen --no-install-recommends && rm -rf 
    /var/lib/apt/lists/*    #注意清理cache
RUN /bin/bash -c "source $HOME/.bashrc;echo
$HOME"

WORKDIR

作用:設(shè)定當(dāng)前目錄,類似于cd

原則:用WORKDIR,不要用RUN cd!盡量使用絕對(duì)目錄

WORKDIR /root
WORKDIR /test  #如果沒有會(huì)自動(dòng)創(chuàng)建test目錄
WORKDIR demo
RUN pwd        #輸出結(jié)果應(yīng)該是 /test/demo

ADD and COPY

作用:把本地文件添加到Docker image里面

原則:大部分情況,COPY優(yōu)先于ADD!ADD除了COPY還有額外功能(解壓)!添加遠(yuǎn)程文件/目錄請(qǐng)使用curl或者wget!

ADD hello /
ADD test.tar.gz /   #添加到根目錄并解壓
WORKDIR /root
ADD hello test/     # /root/test/hello
WORKDIR /root
COPY hello test/

ENV

作用:設(shè)置一個(gè)環(huán)境變量,引用常量

原則:盡量使用ENV增加可維護(hù)性!

ENV MYSQL_VERSION 5.6    # 設(shè)置常量
RUN apt-get install -y mysql-server= "${MYSQL_VERSION}" 
    && rm -rf /var/lib/apt/lists/*   # 引用常量

VOLUME and EXPOSE (存儲(chǔ)和網(wǎng)絡(luò))

CMD and ENTRYPOINT

CMD:設(shè)置容器啟動(dòng)后默認(rèn)執(zhí)行的命令和參數(shù)

注釋:1.容器啟動(dòng)時(shí)默認(rèn)執(zhí)行的命令 2.如果docker run指定了其他命令,CMD命令被忽略 3.如果定義了多個(gè)CMD,只有最后一個(gè)會(huì)執(zhí)行

ENTRYPOINT:設(shè)置容器啟動(dòng)時(shí)運(yùn)行的命令

注釋:1.讓容器以應(yīng)用程序或者服務(wù)的形式運(yùn)行 2.不會(huì)被忽略,一定會(huì)執(zhí)行 3.最佳實(shí)踐:寫一個(gè)shell腳本作為entrypoint

1.Shell格式

RUN apt-get install -y vim
CMD echo "hello docker"
ENTRYPOINT echo "hello docker"

2.Exec格式

RUN ["apt-get","install","-y","vim"]
CMD [" /bin/echo" , "hello docker" ]
ENTRYPOINT ["/bin/echo" , "hello docker"]

3.Shell和Exec格式

Dockerfile1 A

FROM centos
ENV name Docker
ENTRYPOINT echo "hello $name"

Dockerfile2

FROM centos
ENV name Dokcer
ENTRYPOINT ["/bin/bash", "-c","echo hello $name" ]
鏡像發(fā)布

docker login

docker push

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

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

相關(guān)文章

  • Linux 學(xué)習(xí)筆記(四):Docker

    摘要:系統(tǒng)有兩個(gè)程序服務(wù)端和客戶端。其中服務(wù)端是一個(gè)服務(wù)進(jìn)程,管理著所有的容器??蛻舳藙t扮演著服務(wù)端的遠(yuǎn)程控制器,可以用來控制的服務(wù)端進(jìn)程。守護(hù)進(jìn)程會(huì)處理復(fù)雜繁重的任務(wù),例如建立運(yùn)行發(fā)布你的容器??蛻舳撕褪刈o(hù)進(jìn)程之間通過或者進(jìn)行通信。 預(yù)期學(xué)習(xí)目標(biāo) Docker基本概念 配置本地Docker環(huán)境 容器的生命周期與配置 端口映射和容器鏈接 利用volume保存持久化容器數(shù)據(jù) 檢查容器日志 監(jiān)...

    ssshooter 評(píng)論0 收藏0
  • 慕課網(wǎng)_《Docker入門》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。必填用于執(zhí)行命令,當(dāng)執(zhí)行完畢后,將產(chǎn)生一個(gè)新的文件層??蛇x指定此鏡像啟動(dòng)時(shí)默認(rèn)執(zhí)行命令??蛇x用于指定需要暴露的網(wǎng)絡(luò)端口號(hào)??蛇x向鏡像中掛載一個(gè)卷組。 時(shí)間:2017年09月16日星期六說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:無 學(xué)習(xí)源碼:無 第一章:課程簡(jiǎn)介 1-1 課程介紹 Docke...

    CoorChice 評(píng)論0 收藏0
  • docker 學(xué)習(xí)筆記

    摘要:下的使用筆記安裝確認(rèn)是否安裝成功搜索鏡像獲取鏡像查看本地所有鏡像運(yùn)行鏡像,運(yùn)行起來的鏡像就叫做容器了,仔細(xì)看,你會(huì)發(fā)現(xiàn)終端交互的用戶名變掉了,說明我們進(jìn)入到了容器的內(nèi)部。個(gè)人理解是因?yàn)楫a(chǎn)生數(shù)據(jù)需要映射。創(chuàng)建成功后會(huì)返回這個(gè)鏡像的信息。 ubuntu 14.10下docker的使用筆記1 docker 安裝 curl -sSL https://get.docker.com/ | sh ...

    jk_v1 評(píng)論0 收藏0
  • docker 學(xué)習(xí)筆記

    摘要:下的使用筆記安裝確認(rèn)是否安裝成功搜索鏡像獲取鏡像查看本地所有鏡像運(yùn)行鏡像,運(yùn)行起來的鏡像就叫做容器了,仔細(xì)看,你會(huì)發(fā)現(xiàn)終端交互的用戶名變掉了,說明我們進(jìn)入到了容器的內(nèi)部。個(gè)人理解是因?yàn)楫a(chǎn)生數(shù)據(jù)需要映射。創(chuàng)建成功后會(huì)返回這個(gè)鏡像的信息。 ubuntu 14.10下docker的使用筆記1 docker 安裝 curl -sSL https://get.docker.com/ | sh ...

    paulquei 評(píng)論0 收藏0
  • Docker學(xué)習(xí)筆記

    摘要:學(xué)習(xí)背景近些年,如果你是一名開發(fā),那么這個(gè)熱門的技術(shù)名詞你一定聽說過,我也不例外,但是因?yàn)槠綍r(shí)沒接觸過,所以一直都沒動(dòng)力去了解使用。 學(xué)習(xí)背景 近些年,如果你是一名開發(fā),那么Docker這個(gè)熱門的技術(shù)名詞你一定聽說過,我也不例外,但是因?yàn)槠綍r(shí)沒接觸過,所以一直都沒動(dòng)力去了解使用。最近在折騰自己維護(hù)在github上的項(xiàng)目的時(shí)候,發(fā)現(xiàn)項(xiàng)目所依賴的外部環(huán)境比較多,比如zookeeper、re...

    chadLi 評(píng)論0 收藏0
  • docker 學(xué)習(xí)筆記

    摘要:持久的標(biāo)準(zhǔn)輸入是交互式的半邊天,標(biāo)志則是另外半邊天,它告訴為要?jiǎng)?chuàng)建的容器分配一個(gè)偽終端。而且一旦刪除容器,鏡像也會(huì)被刪除。顯示最后個(gè)容器,不論這些容器正在運(yùn)行還是已經(jīng)停止。 命令行下創(chuàng)建一個(gè)我們能與之進(jìn)行交互的容器,而不是一個(gè)運(yùn)行后臺(tái)服務(wù)的容器。docker run -i -t ubuntu /bin/bash-i標(biāo)志保證容器STDIN是開啟的,盡管我們并沒有附著到容器中。持久的標(biāo)準(zhǔn)輸...

    CarterLi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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