docker精講

前言

??三天時間把docker學(xué)完了,學(xué)完依舊很懵,做個小小的總結(jié)用于以后回顧


開搞

1.鏡像技術(shù)(將所有的東西都打包,一處構(gòu)建處處運(yùn)行)
?(1) 打破代碼即應(yīng)用,(運(yùn)行文檔+配置環(huán)境+運(yùn)行環(huán)境+運(yùn)行依賴包+操作系統(tǒng)發(fā)行版+內(nèi)核)
?(2) 就是高度濃縮版,小型版的linux系統(tǒng)

  1. 優(yōu)點(diǎn)
    ?(1) 更快速的應(yīng)用交付和部署
    ?(2) 更快捷的升級和擴(kuò)縮容
    ?(3) 更簡單的系統(tǒng)運(yùn)維
    ?(4) 更高效的計(jì)算資源利用

  2. 三大特征:鏡像,容器,倉庫 倉庫存放鏡像,鏡像里有容器

  3. docker
    ?(1) Docker:容器運(yùn)行載體或管理引擎,
    ?(2) 程序和配置依賴打包:可交付的運(yùn)行環(huán)境
    ?(3) 運(yùn)行環(huán)境:Image鏡像文件
    ?(4) 鏡像文件才能生成Docker容器
    ?(5) Image鏡像文件:容器的模板
    ?(6) 容器:Image鏡像文件的實(shí)例(相當(dāng)于是一個簡易版的linux環(huán)境和運(yùn)行在其中的應(yīng)用程序)

5.安裝docker yum install docker 靜靜等待就行,可以加一個阿里云鏡像加速

6.docker幫助命令
?(1) docker version 查看docker版本
?(2) docker info 顯示 Docker 系統(tǒng)信息,包括鏡像和容器數(shù)
?(3) docker --help

7.鏡像命令
?(1) docker images [option] 列出本地主機(jī)上的鏡像
??-a : 列出本地所有鏡像(含中間鏡像層)
??-q : 只顯示鏡像id
??--digests: 顯示鏡像的摘要信息
??--no-trunc : 顯示完整的鏡像信息

?(2) docker search [option] 某個xxx鏡像名稱
??-no-trunc : 顯示完整的鏡像描述
??-s 數(shù)字 : 列出收藏?cái)?shù)不小于指定值的鏡像
??--automated : 只列出automated build類型的鏡像

?(3)docker pull 鏡像名 從docker鏡像源服務(wù)器拉取指定鏡像或者庫鏡像

?(4)docker push 鏡像名 推送指定鏡像或者庫鏡像至docker源服務(wù)器

?(5)docker rmi 鏡像id 刪除鏡像
??-f 鏡像id: 刪除單個
??-f $(docker images -qa):刪除全部

?(6)docker commit 鏡像名 提交容器副本使之成為一個新的鏡像

docker commit -m=“提交的描述信息” -a=“作者” 容器id 要創(chuàng)建的目標(biāo)鏡像名:[標(biāo)簽名]

?(7)docker build bulid成一個鏡像文件
?? -f: 文件地址
??-t: 命名空間 自定義一個文件的名字(將容器卷建在這個文件夾下)
??. : 當(dāng)前目錄下

docker build -f /mydocker/dockerfile -t zzyy/centos .

?(7)docker save 鏡像名 保存一個鏡像為一個 tar 包

7.容器命令
?(1) docker run [option] 鏡像名 [COMMAND][ARG] 新建并啟動容器
??--name="容器新名字": 為容器指定一個名字
??-i: 以交互模式運(yùn)行容器,通常與-t同時連用
??-t : 為容器分配一個偽輸入終端,通常與-i同時連用
??-p: 映射到外部的端口
??-v: 文件掛載的地址 /宿主機(jī)絕對路徑:/容器內(nèi)目錄 (容器數(shù)據(jù)卷用)
??-d: 后臺運(yùn)行容器
??-e: 設(shè)置環(huán)境變量

docker run -p 8080:8080 -d  -e "SERVER_PORT=8080"  -v /mnt:/mnt --name="xxxx" 鏡像名:版本號

?(2) docker ps [option] 列出當(dāng)前所有正在運(yùn)行的容器
??-a : 列主當(dāng)前所有正在運(yùn)行的和歷史上運(yùn)行過的容器
??-l: 顯示最近創(chuàng)建的容器
??-n : 顯示最近n個創(chuàng)建的容器
??--no-trunc: 不截?cái)噍敵?/p>

?(3) 退出容器
??exit : 容器停止退出
??Ctrl+P+Q : (容器不停止退出)退出容器

?(4)docker start 容器id或容器名 啟動容器

?(5) docker restart 容器id或容器名 重啟容器

?(6) docker stop 容器id或容器名 停止容器

?(7) docker kill 容器id或容器名 強(qiáng)制停止容器

?(8) docker rm 容器id或容器名 刪除已停止的容器
??$(docker ps -qa) :一次性刪除多個容器
??docker ps -qa | xargs docker rm:一次性刪除多個容器

?(9)docker logs -f -t --tail 容器id 查看容器日志

?(10)docker top 容器id查看容器內(nèi)運(yùn)行的進(jìn)程

?(11)docker inspect 容器id 查看容器內(nèi)部細(xì)節(jié)(以json串的形式顯示)

?(12)進(jìn)入正在運(yùn)行的容器并以命令行交互
??docker exec 容器id bashShell 在容器中打開新的終端,并且啟動新的進(jìn)程
??docker attach 容器id 重新進(jìn)入 (直接進(jìn)入容器啟動命令的終端,不會啟動新的進(jìn)程)

?(13)docker cp 容器id:容器內(nèi)部路徑 目的主機(jī)路徑 從容器內(nèi)拷貝文件到主機(jī)

?(14)docker create 創(chuàng)建一個新的容器,同 run,但不啟動容器

?(15)docker exec -it 容器名或id /bin/bash 進(jìn)容器

?(16)docker pause 容器id 暫停容器

8.數(shù)據(jù)卷和數(shù)據(jù)卷容器
?(1) 在虛擬機(jī)里使用docker的時候,會發(fā)現(xiàn)虛擬機(jī)一關(guān),在打開的時候docker里的容器里面的數(shù)據(jù)可能會沒了,這時候就要對數(shù)據(jù)進(jìn)行持久化,在docker的容器中管理數(shù)據(jù)主要有兩種方式:數(shù)據(jù)卷和數(shù)據(jù)卷容器。
??(1) 數(shù)據(jù)卷: 容器內(nèi)數(shù)據(jù)直接映射到宿主機(jī),獨(dú)立與容器的生命周期,容器刪除時,不會刪除其掛載的數(shù)據(jù)卷,也不會存在類似的垃圾機(jī)制對容器存在的數(shù)據(jù)卷進(jìn)行處理。
??(2) 數(shù)據(jù)卷容器: 命名的容器掛載數(shù)據(jù)卷,其他容器通過掛載這個(父容器)實(shí)現(xiàn)數(shù)共享,掛載數(shù)據(jù)卷的容器,稱之為數(shù)據(jù)卷容器

docker run --name=test -p 8080:8080-d -v /home/admin/test:/data/test test 
/*
1.此處 /home/admin/test代表主機(jī)目錄,/data/test代表容器目錄
2.可以多次使用--volumes-from參數(shù)來從多個容器掛載多個數(shù)據(jù)卷。還可以從其他已經(jīng)掛載了容器卷的容器來掛載數(shù)據(jù)卷。
*/

9.Dockerfile
?(1) Dockerfile內(nèi)容基礎(chǔ)知識
??(1) 每條保留字指令都必須是大寫字母(事實(shí)證明小寫也可以)且后面要跟隨至少一個參數(shù)
??(2) 指令按照從上到下,順序執(zhí)行
??(3) #表示注解
??(4) 每條指令都會創(chuàng)建一個新的鏡像層,并對鏡像進(jìn)行提交

?(2) Dockerfile指令詳解

??(1)FROM 基礎(chǔ)鏡像,當(dāng)前新的鏡像是基于那個鏡像的

FROM java:8

??(2)MAINTAINER 鏡像維護(hù)這的姓名和郵箱地址

MAINTAINER GG-LYF <2083298549@qq.com>

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

RUN ["yum","install","vim"]
RUN yum -y install vim

??(4) EXPOSE當(dāng)前容器對外暴露的端口號

EXPOSE 80

??(5) WOEKDIR 指定在創(chuàng)建容器后,終端默認(rèn)登錄的進(jìn)來后的工作目錄,一個落腳點(diǎn)

WORKDIR /data

??(6)ENV用來在構(gòu)建鏡像過程中設(shè)置環(huán)境變量

ENV JAVA_HOME /usr/local/jdk1.8
ENV CLASSPATH $JAVA_HOME /lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.8.0
ENV CATALINA_BASE /usr/local/apache-tomcat-9.8.0
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_BASE/bin

??(7)ADD 在宿主機(jī)目錄下的文件拷貝進(jìn)鏡像且ADD會自動處理URL和解壓tar壓縮包

ADD jdk
ADD apache-tomcat

??(8)COPY將從構(gòu)建上下文目錄中<源目錄>的文件 /目錄復(fù)制到鏡像內(nèi)的<目標(biāo)目鏡>位置

COPY c.txt /usr/local/cincontainer.txt

??(9) VOLUME 容器數(shù)據(jù)卷,用于數(shù)據(jù)保存和持久化工作

VOLUME  /tem

??(10)CMD 指定容器啟動時要運(yùn)行命令,可以寫多個,但只有最后一個有用

CMD echo “success----------------------ok”
CMD /bin/bash

??(11)ENTRYPOINTCMD一樣,但寫的多個可以是追加

ENTRYPOINT  [“/user/local/apache-tomcat-9.8.0/bin/startup.sh”]
ENTRYPOINT ["java","-jar","/app.jar"] 

??(12) ONBUILD當(dāng)構(gòu)建一個被繼承的dockerfile時運(yùn)行命令,父鏡像在被子鏡像繼承后父鏡像的onbuild被觸發(fā)

ONBUILD RUN “被繼承了啊!!!!!!”

??(13) USER 用于指定是哪個用戶

USER   root
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

推薦閱讀更多精彩內(nèi)容

  • 一、Docker容器概述 1、docker中的容器技術(shù)演進(jìn) lxc --> libcontainer --> ru...
    任總閱讀 3,947評論 0 26
  • 《Docker技術(shù)入門與實(shí)踐》筆記 2 核心概念 Docker的三個核心概念分別為:鏡像、容器和倉庫。 2.1 鏡...
    涵仔睡覺閱讀 404評論 0 0
  • 0x01 核心概念 Docker鏡像類似于虛擬機(jī)鏡像,可以理解為一個面向Docker引擎的只讀模板,包含了文件系統(tǒng)...
    閑云逸心閱讀 4,761評論 0 9
  • 一. 什么是Docker 在docker的官方之什么是docker中提到了一句話:“當(dāng)今各大組織或者團(tuán)體的創(chuàng)新都源...
    dddye閱讀 1,177評論 0 1
  • docker 部署 標(biāo)簽(空格分隔): docker 系統(tǒng)centos6.8 mini docker 官方文檔ht...
    Lisong閱讀 682評論 0 1