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

資訊專(zhuān)欄INFORMATION COLUMN

【Docker】第2篇:Docker 介紹

nevermind / 633人閱讀

摘要:根據(jù)鏡像文件生成容器實(shí)例。容器是一個(gè)運(yùn)行時(shí)環(huán)境,就是鯨魚(yú)背上的一個(gè)個(gè)集裝箱。這一層于我們典型的系統(tǒng)一樣,包含加載器和內(nèi)核。數(shù)據(jù)卷使得數(shù)據(jù)可以持久化和共享。

docker簡(jiǎn)介

1.docker是基于go語(yǔ)言實(shí)現(xiàn)
主要目標(biāo)是對(duì)對(duì)應(yīng)組件的封裝、分發(fā)、部署、運(yùn)行等生命周期的管理,使應(yīng)用程序及其運(yùn)行環(huán)境能夠做到“一次封裝,到處運(yùn)行”

2.docker為了解決運(yùn)行環(huán)境和配置問(wèn)題的軟件容器,方便做持續(xù)集成并有助于整體發(fā)布的容器虛擬化技術(shù)

3.docker能干些什么?

虛擬機(jī)技術(shù)
簡(jiǎn)單理解可以在一種操作系統(tǒng)里面運(yùn)行另外一種操作系統(tǒng),比如windows中運(yùn)行l(wèi)inux系統(tǒng),常見(jiàn)的是vmware;缺點(diǎn):占用資源,啟動(dòng)慢,安裝步驟繁瑣。

容器虛擬化技術(shù)
docker既是一種容器虛擬化技術(shù),docker本身是一個(gè)容器運(yùn)行載體或稱(chēng)之為管理引擎,我們把應(yīng)用程序和配置依賴(lài)打包好形成一個(gè)可交付的運(yùn)行環(huán)境,這個(gè)打包好的運(yùn)行環(huán)境就是鏡像文件,只有通過(guò)這個(gè)鏡像文件才能生成docker容器。docker 根據(jù) image 鏡像文件生成容器實(shí)例。同一個(gè)image文件可以生成多個(gè)同時(shí)運(yùn)行的容器實(shí)例。

docker 架構(gòu)

docker使用 docker 初體驗(yàn)

新建并啟動(dòng)一個(gè)docker容器,使用 docker run命令即可

docker run -d -p 91:80 nginx


需要注意的是使用 docker run 命令創(chuàng)建容器時(shí),會(huì)先檢查本地是否存在指定鏡像,如果本地不存在,docker 會(huì)自動(dòng)從 dockerHub 上下載一個(gè)該鏡像并啟動(dòng)。

檢驗(yàn)docker容器是否啟動(dòng)成功

訪(fǎng)問(wèn)地址http://localhost:91/

docker的三大要素

倉(cāng)庫(kù):存儲(chǔ)鏡像的地方,分為公開(kāi)倉(cāng)庫(kù)和私有倉(cāng)庫(kù)

鏡像:包含了你打包的應(yīng)用程序及其所依賴(lài)的環(huán)境

容器:用鏡像創(chuàng)建的運(yùn)行實(shí)例,可以把容器看成簡(jiǎn)易版的Linux的容器,一個(gè)運(yùn)行中的容器是一個(gè)運(yùn)行在Docker主機(jī)上的進(jìn)程,但它和主機(jī),以及所有運(yùn)行在主機(jī)上其他進(jìn)程都是隔離的。

容器是利用什么機(jī)制實(shí)現(xiàn)隔離的?

Linux 命名空間

Linux 控制組(cgroups)

docker底層原理

docker是一個(gè)client-server結(jié)構(gòu)的進(jìn)程,docker守護(hù)進(jìn)程運(yùn)行在主機(jī)上,然后通過(guò)socket連接從客戶(hù)端的訪(fǎng)問(wèn),守護(hù)進(jìn)程從客戶(hù)端接受命令并管理運(yùn)行在主機(jī)上的docker容器。容器是一個(gè)運(yùn)行時(shí)環(huán)境,就是鯨魚(yú)背上的一個(gè)個(gè)集裝箱。

docker常用命令

1.幫助命令

docker version
docker info
docker --help

2.鏡像命令

docker images : 列出本地鏡像
docker image -qa  : 顯示全部鏡像id
docker images --digests : 顯示鏡像簡(jiǎn)介信息
docker images --digests --no-trunc

docker search tomcat : 搜索某個(gè)鏡像
docker pull tomcat : 下載鏡像到本地  等價(jià)于  docker pull tomcat:latest(默認(rèn)下最新版本)
docker rmi tomact : 刪除某個(gè)鏡像 
docker rmi tomcat:6.5 刪除制定版本鏡像
docker rmi -f tomcat 強(qiáng)制刪除鏡像
docker rmi -f nginx tomcat 強(qiáng)制刪除多個(gè)鏡像
docker rmi -f ${docker images -qa} 強(qiáng)制刪除全部

3.容器命令

(1) docker pull centos : 下載centos鏡像
(2) docker run [options] image
—name=“容器新名字” :為容器制定一個(gè)名字
-i : 容器的image id
-t : 交互式啟動(dòng) ,比如 :docker run -it 0a8b6f21d511
-d : 后臺(tái)運(yùn)行容器
-p : 制定映射端口
docker run -it -p 8080:8080 tomcat (-p 指定主機(jī)端口:docker容器暴露給宿主機(jī)的端口;-P 隨機(jī)分配端口)

(3) docker ps : docker中運(yùn)行的進(jìn)程,docker ps -n 5
(4) exit: 容器停止退出
(5) docker restart  docker stop  docker kill  docker rm 
(6)一次性刪除多個(gè)容器: 
docker rm -f $(docker ps -qa)
docker ps -aq | args docker rm

(7)docker run -d 容器名 : 運(yùn)行容器
(8)docker logs -f -t --tail n 容器id(-f : 跟隨最新的日志;-t :加入時(shí)間戳;--tail n : 倒數(shù)幾行): 查看容器日志
演示命令:
docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done" : 每隔兩秒輸出內(nèi)容
(9) docker top 容器ID : 查看容器內(nèi)部運(yùn)行的進(jìn)程
(10) docker inspect 容器ID : 查看容器內(nèi)部細(xì)節(jié),如:docker inspect f791d79a4467
(11) docker attach 容器ID : 重新進(jìn)入未停止的容器
(12) docker exec -t f791d79a4467 ls -l /tmp : 重新進(jìn)入某個(gè)容器并執(zhí)行容器中的命令,拿到結(jié)果反給宿主機(jī)
(13) docker cp 容器ID:路徑文件  /宿主機(jī)路徑 :copy容器內(nèi)容到宿主機(jī)上
docker的鏡像

鏡像是一種輕量級(jí)、可執(zhí)行的獨(dú)立軟件包,用來(lái)打包軟件運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開(kāi)發(fā)的軟件,它包含運(yùn)行某個(gè)軟件所需的所有內(nèi)容,包括代碼、運(yùn)行時(shí)需要的庫(kù)、環(huán)境變量和配置。

unionFS:聯(lián)合文件系統(tǒng),一層層文件系統(tǒng)組成

docker如何加載?
docker的鏡像實(shí)際上由一層一層的文件系統(tǒng)組成,這種層級(jí)文件系統(tǒng)是unionFS

bootfs(boot file system):主要包含bootloader和kernel,bootloader主要引導(dǎo)加載kernel,linux剛啟動(dòng)是會(huì)加載bootfs文件系統(tǒng),在docker鏡像最底層是bootfs文件。這一層于我們典型的Linux/unix系統(tǒng)一樣,包含boot加載器和內(nèi)核。當(dāng)boot加載完成之后整個(gè)內(nèi)核就在內(nèi)存中了,此時(shí)系統(tǒng)會(huì)卸載bootfs

rootfs(root file system):在bootfs之上,包含的就是典型linux系統(tǒng)中的/dev,/bin,/etc等目錄和文件。

docker commit -m=“提交信息” -a=“作者”  容器ID  要?jiǎng)?chuàng)建的目標(biāo)鏡像名稱(chēng):[標(biāo)簽名]
docker commit -m=“helloword” -a=“feifei” 0a8b6f21d511 feifei/tomcat02:1.2
docker容器數(shù)據(jù)卷

docker容器產(chǎn)生的數(shù)據(jù),如果不通過(guò)docker commit生成新的鏡像,使得數(shù)據(jù)作為鏡像的一部分保存下來(lái),那么當(dāng)容器刪除后,數(shù)據(jù)自然就沒(méi)有了,為了保存數(shù)據(jù)我們使用docker的數(shù)據(jù)卷。數(shù)據(jù)卷使得數(shù)據(jù)可以持久化和共享。

命令添加數(shù)據(jù)卷

docker run -it -v /宿主機(jī)絕對(duì)路徑目錄:/容器內(nèi)目錄  鏡像名
例如:docker run -it -v /tmp/my-volume:/tmp/my-volume centos ;宿主機(jī)目錄:/tmp/my-volume和docker容器目錄/tmp/my-volume這兩個(gè)目錄中的數(shù)據(jù)可以隨時(shí)同步,容器重啟后,也會(huì)同步;

docker run -it -v /宿主機(jī)絕對(duì)路徑目錄:/容器內(nèi)目錄:ro  鏡像名 (帶權(quán)限的命令,同步到容器內(nèi)的文件read only)

這種方式不支持多臺(tái)宿主機(jī)都能夠建立數(shù)據(jù)卷

DockerFile添加

可以在Dockerfile中使用 VOLUME 指令來(lái)給鏡像添加一個(gè)或多個(gè)數(shù)據(jù)卷
1.創(chuàng)建Dockerfile文件目錄
/Users/ShiFeifei/Software/docker-config,在這個(gè)目錄下

touch Dockerfile 
vim Dockerfile 

添加如下內(nèi)容

FROM centos
RUN mkdir /myvol
RUN echo "hello world" > /myvol/greeting
VOLUME /myvol

2.新建一個(gè) docker 容器

docker build -f /Users/ShiFeifei/Software/docker-config/Dockerfile -t sff/centos .
Dockerfile

Dockerfile 是用來(lái)構(gòu)建 Docker鏡像的構(gòu)建文件,是由一系列命令和參數(shù)構(gòu)成

Dockerfile 構(gòu)建步驟

編寫(xiě)Dockerfile文件

docker build

docker run

Dockerfile 文件執(zhí)行規(guī)則

關(guān)鍵字指令都必須是大寫(xiě)字母,并且后面要跟隨至少一個(gè)參數(shù)

指令按照從上到下順序執(zhí)行

#表示注釋

每條指令都會(huì)創(chuàng)建一個(gè)新的鏡像層,并對(duì)鏡像進(jìn)行提交

Dockerfile、Docker鏡像和Docker容器分別代表了軟件的三個(gè)不同階段

Dockerfile是軟件的原材料

Docker鏡像是軟件的交付品

Docker容器則可以認(rèn)為是軟件的運(yùn)行態(tài)

Dockerfile面向開(kāi)發(fā),Docker鏡像成為軟件交付標(biāo)準(zhǔn),Docker容器則涉及部署與運(yùn)維,三者缺一不可,是Docker體系的基石。

Dockerfile 保留字指令

FORM : 基礎(chǔ)鏡像,當(dāng)前要?jiǎng)?chuàng)建的來(lái)自于這個(gè)基礎(chǔ)鏡像

MAINTAINER : 鏡像維護(hù)者的姓名和郵箱地址

RUN : 容器構(gòu)建時(shí)需要運(yùn)行的命令

EXPOSE : 當(dāng)前容器啟動(dòng)后對(duì)外暴露的端口聲明

WORKDIR : 指定在容器創(chuàng)建后,終端默認(rèn)登錄進(jìn)來(lái)的工作目錄,可以理解為家目錄

ENV : 設(shè)置環(huán)境變量

ADD : 將宿主機(jī)目錄下的文件拷貝給鏡像,且ADD命令會(huì)自動(dòng)處理URL和解壓壓縮包

COPY : 類(lèi)似ADD,拷貝文件和目錄到鏡像中

VOLUME : 指定容器數(shù)據(jù)卷

CMD : 指定一個(gè)容器啟動(dòng)時(shí)要運(yùn)行的命令,Dockerfile 中可以有多個(gè)CMD命令,但只有最后一個(gè)生效;CMD 會(huì)被 docker run 之后的參數(shù)覆蓋

ENTRYPOINT : 指定一個(gè)容器啟動(dòng)時(shí)要運(yùn)行的命令,目的和CMD一樣,都是指定容器啟動(dòng)程序及參數(shù),參數(shù)不會(huì)被覆蓋,只會(huì)追加

ONBUILD :

案例

1.實(shí)現(xiàn)一個(gè)功能,定制一個(gè) mycentos 支持vim、ifconfig命令,并且修改登錄后的默認(rèn)路徑

FROM centos
ENV homePath /tmp
WORKDIR $homePath  #登錄時(shí)的目錄是 /tmp
RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80
CMD /bin/bash

2.自定義一個(gè)centos,自帶 tomcat 、jdk

FROM lentos
MAINTAINER shifeifei

#把宿主機(jī)當(dāng)前路徑下的文件c.txt拷貝到容器的/usr/local/路徑下
COPY c.txt /usr/local/test.txt

#把Java和tomcat添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.8.tar.gz /usr/local/

#安裝vim編輯器
RUN yum -y install vim

#設(shè)置工作訪(fǎng)問(wèn)時(shí)的WORKDIR路徑
ENV MYPATH /usr/local
WORKDIR $MYPATH

#配置Java、tomcat環(huán)境變量
ENV JVAV_HOME /usr/local/jdk1.8.0_171
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#容器運(yùn)行時(shí)監(jiān)聽(tīng)端口
EXPOSE 8080
#啟動(dòng)運(yùn)行tomcat
#CMD [“/usr/local/apache-tomcat-9.0.8/bin/startup.sh”,"run"]
CMD /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.8/bin/logs/catalina.out

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

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

相關(guān)文章

  • Docker 深入之 Build 原理

    摘要:先簡(jiǎn)單介紹下,通常情況下我們將其稱(chēng)之為鏡像,鏡像是由多個(gè)層組成的文件,這些層用于在容器內(nèi)執(zhí)行代碼命令等。而的時(shí)候則會(huì)將此信息再次進(jìn)行編碼。 使用 Docker 時(shí),最常用的命令無(wú)非是 docker container 和 docker image 相關(guān)的子命令,當(dāng)然最初沒(méi)有管理類(lèi)命令(或者說(shuō)分組)的時(shí)候,最常使用的命令也無(wú)非是 docker run docker commit dock...

    BearyChat 評(píng)論0 收藏0
  • Docker 深入之 Build 原理

    摘要:先簡(jiǎn)單介紹下,通常情況下我們將其稱(chēng)之為鏡像,鏡像是由多個(gè)層組成的文件,這些層用于在容器內(nèi)執(zhí)行代碼命令等。而的時(shí)候則會(huì)將此信息再次進(jìn)行編碼。 使用 Docker 時(shí),最常用的命令無(wú)非是 docker container 和 docker image 相關(guān)的子命令,當(dāng)然最初沒(méi)有管理類(lèi)命令(或者說(shuō)分組)的時(shí)候,最常使用的命令也無(wú)非是 docker run docker commit dock...

    scq000 評(píng)論0 收藏0
  • SpringCloud( 055 )CentOS7 搭建 docker-registry 私有庫(kù)

    摘要:第篇搭建私有庫(kù)及管理界面一大致介紹基于前面的部署,容器一多非常不便于管理,于是急需一個(gè)自己的私有庫(kù)而目前市面上大多數(shù)的私有庫(kù)基本上都是后臺(tái)服務(wù)加前臺(tái)構(gòu)成,于是選來(lái)選去,最后選擇了管理界面之所以選擇這款管理界面,我就簡(jiǎn)述闡述一下,基于以下 SpringCloud(第 055 篇)CentOS7 搭建 docker-registry 私有庫(kù)及管理界面 - 一、大致介紹 1、基于前面dock...

    tracymac7 評(píng)論0 收藏0
  • SpringCloud( 055 )CentOS7 搭建 docker-registry 私有庫(kù)

    摘要:第篇搭建私有庫(kù)及管理界面一大致介紹基于前面的部署,容器一多非常不便于管理,于是急需一個(gè)自己的私有庫(kù)而目前市面上大多數(shù)的私有庫(kù)基本上都是后臺(tái)服務(wù)加前臺(tái)構(gòu)成,于是選來(lái)選去,最后選擇了管理界面之所以選擇這款管理界面,我就簡(jiǎn)述闡述一下,基于以下 SpringCloud(第 055 篇)CentOS7 搭建 docker-registry 私有庫(kù)及管理界面 - 一、大致介紹 1、基于前面dock...

    gekylin 評(píng)論0 收藏0
  • Docker鏡像細(xì)節(jié)

    摘要:簡(jiǎn)單來(lái)說(shuō)是鏡像的源碼。例如,的鏡像鏡像,在中是一個(gè)基礎(chǔ)鏡像的鏡像也是鏡像那么鏡像和共享同一個(gè)基礎(chǔ)鏡像層,提高了存儲(chǔ)效率。 前言 只有光頭才能變強(qiáng)。 文本已收錄至我的GitHub倉(cāng)庫(kù),歡迎Star:https://github.com/ZhongFuCheng3y/3y showImg(https://segmentfault.com/img/remote/14600000180560...

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

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

0條評(píng)論

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