docker基礎

docker 三大核心

  • 鏡像(Image)

Docker 鏡像(Image),就至關因而一個root文件系統。
好比官方鏡像ubuntu:1 6.04就包含了完整的一套Ubuntu16.04最小系統的root文件系統。docker

  • 容器(Container)

鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的類和對象同樣,
鏡像是靜態的定義,容器是鏡像運行時的實體。容器能夠被建立、啓動、中止、刪除、暫停等。shell

  • 倉庫(Repository)

倉庫可當作一個代碼控制中心,用來保存鏡像。json

Docker服務相關命令(centos爲例)

  • 啓動docker服務
systemctl start docker
  • 中止docker服務
systemctl stop docker
  • 重啓docker服務
systemctl restart docker
  • 查看docker服務狀態
systemctl status docker
  • 設置開機啓動docker服務
systemctl enable docker

Docker鏡像經常使用命令

  • 搜索
docker search 關鍵字
  • 下載
docker pull 鏡像名[:TAG]
  • 查看本地鏡像
docker images [OPTIONS] [REPSSITORY[:TAG]]

參數說明:
    --all,-a        false       列出全部鏡像(包括中間映像層)
    --digests       false       顯示摘要信息
    --filter,-f                 顯示知足條件的鏡像
    --format                    經過Go語言模板文件顯示鏡像
    --no-trunc      false       不截斷輸出,顯示完整的鏡像信息
    -quiet,-q       false       只顯示鏡像ID
  • 刪除本地鏡像
docker rmi [OPTIONS] IMAGE [IMAGE...]

參數說明:
    --force,-f      false       強制刪除
    --no-trunc      false       是否移除該鏡像的過程鏡像

刪除全部鏡像
    docker rmi -f $(docker images)
  • 保存鏡像
docker save [OPTIONS] IMAGE [IMAGE...]

參數說明:
    --output,-o                 寫入文件而非STDOUT
  • 加載鏡像
docker load [OPTIONS]

參數說明:
    --input,-i                  從文件加載而非STDIN
    --quiet,-q      false           靜默加載

Docker容器相關命令

  • 查看容器
docker ps #查看正在運行的容器
docker ps -a #查看全部容器
  • 建立並啓動容器
docker run 參數

參數說明:
-i: 保持容器運行。一般與-t同時使用。加入it這兩個參數後,容器建立後自動進入容器中,退出容器後,容器自動關閉。

-t:爲容器從新分配個僞輸入終端,一般與-i同時使用。

-d:以守護(後臺)模式運行容器。建立一個容器在後臺運行,須要使用docker exec進入容器。退出後,容器不會關閉。

-it建立的容器- 般稱爲交互式容器,-id建立的容器一 般稱爲守護式容器
--name: 爲建立的容器命名。

-p 端口映射 eg: -p 3307:3306 表示宿主機3307端口對應容器3306端口
  • 進入容器
docker exec 參數 #退出容器,容器不會關閉
  • 中止容器
docker stop 容器名稱
  • 啓動容器
docker start 容器名稱
  • 刪除容器:若是容器是運行狀態則刪除失敗,須要中止容器才能刪除
docker rm 容器名稱
  • 查看容器信息
docker inspect 容器名稱

Docker容器的數據卷

數據卷概念

思考:ubuntu

  1. Docker容器刪除後,在容器中產生的數據也會隨之銷燬
  2. Docker容器和外部機器能夠直接交換文件嗎?
  3. 容器之間想要進行數據交互?

數據卷vim

  • 數據卷是宿主機中的一個目錄或文件
  • 當容器目錄和數據卷目錄綁定後,對方的修改會當即同步
  • 一個數據卷能夠被多個容器同時掛載
  • 個容器也能夠被掛載多個數據卷

img

數據卷做用centos

  • 容器數據持久化
  • 外部機器和容器間接通訊
  • 容器之間數據交換

配置數據卷

  • 建立啓動容器時,使用-V參數設置數據卷
docker run ... -v 宿主機目錄(文件):容器內目錄(文件)
  • 注意事項:
  1. 目錄必須是絕對路徑
  2. 若是目錄不存在,會自動建立
  3. 能夠掛載多個數據卷

img

數據卷容器

數據卷容器就是一個正常的容器,專門用來提供數據卷供其它容器掛載的。瀏覽器

配置數據卷容器

1.例如建立啓動c3數據卷容器,使用-v參數設置數據卷bash

docker run -it --name=c3 -v /volume centos:7 /bin/bash

2.建立啓動c1 c2容器,使用--volumes-from參數設置數據卷服務器

docker run it - name= =c1 --volumes-from c3 centos:7 /bin/bash
docker run it - name= =c2 --volumes-from c3 centos:7 /bin/bash

數據卷小結

  1. 數據卷概念

宿主機的一個目錄或文件性能

  1. 數據卷做用

    • 容器數據持久化
    • 客戶端和容器數據交換
    • 容器間數據交換
  2. 數據卷容器

建立一個容器, 掛載一個目錄, 讓其餘容器繼承自該容器( --volume-from)。
經過簡單方式實現數據卷配置

鏡像製做

Docker鏡像如何製做?
1.容器轉爲鏡像

docker commit 容器id 鏡像名稱:版本號
docker save -o 壓縮文件名稱 鏡像名稱:版本號
docker load -i 壓縮文件名稱

2.dockerfile

關鍵字 做用 備註
FROM 指定父鏡像 指定dockerfile基於那個image構建
MAINTAINER 做者信息 用來標明這個dockerfile誰寫的
LABEL 標籤 用來標明dockerfile的標籤,可使用Label代替Maintainer,最終都是在docker image基本信息中能夠查看
RUN 執行命令 執行一段命令,默認是/bin/sh, 格式: RUN command或者RUN ["command","param1","param2"]
CMD 容器啓動命 提供啓動容器時候的默認命令,和ENTRYPOINT配合使用.格式CMD command param1 param2或者CMD ["command","param1","param2"]
ENTRYPOINT 入口 通常在製做一些執行就關閉的容器中會使用
COPY 複製文件 build的時候複製文件到image中
ADD 添加文件 build的時候添加文件到image中,不只僅侷限於當前build上下文 能夠來源於遠程服務
ENV 環境變量 指定build時候的環境變量,能夠在啓動的容器的時候經過-e 覆蓋,格式ENV name=value
ARG 構建參數 構建參數:只在構建的時候使用的參數,若是有ENV,那麼ENV的相同名字的值始終覆蓋arg的參數
VOLUME 定義外部能夠掛載的數據卷 指定build的image那些目錄能夠啓動的時候掛載到文件系統中,啓動容器的時候使用-v綁定,格式 VOLUME ["目錄"]
EXPOSE 暴露端口 定義容器運行的時候監聽的端口,啓動容器的使用-p來綁定暴露端口, 格式: EXPOSE 8080或者EXPOSE 8080/udp
WORKDIR 工做目錄 指定容器內部的工做目錄,若是沒有建立則自動建立,若是指定/使用的是絕對地址,若是不是/開頭,那麼是在上一條workdir的路徑的相對路徑
USER 指定執行用戶 指定build或者啓動的時候,用戶在RUN CMD ENTRYPONT執行的時候的用戶
HEALTHCHECK 健康檢查 指定監測當前容器的健康監測的命令,基本上沒用,由於不少時候,應用自己有健康監測機制
ONBUILD 觸發器 當存在ONBUILD關鍵字的鏡像做爲基礎鏡像的時候,當執行FROM完成以後,會執行ONBUILD的命令,可是不影響當前鏡像,用處也不怎麼大
STOPSIGNAL 發送信號量到宿主機 該STOPSIGNAL指令設置將發送到容器的系統調用信號以退出。
SHELL 指定執行腳本的shell 指定RUN CMD ENTRYPOINT執行命令的時候,使用的shell

Docker私有倉庫

私有倉庫搭建

  • 一、拉取私有倉庫鏡像
docker pull registry
  • 二、啓動私有倉庫容器
docker run -id --name=registry -p 5000:5000 registry
  • 三、打開瀏覽器 輸入地址 http://私有倉庫服務器ip: 5000/v2/_catalog, 看到{"repositories":[]} 表示私有倉庫搭建成功
  • 四、修改daemon.json
vim /etc/docker/daemon.json

在上述文件中添加一個key,保存退出。此步用於讓docker 信任私有倉庫地址;注意將私有倉庫服務器ip修改成本身私有倉庫服務器真實ip

{"insecure-registries":["私有倉庫服務器ip: 5000"]}
  • 五、重啓docker 服務
systemctl restart docker
docker start registry

docker容器虛擬化與傳統虛擬機比較

相同:

  • 容器和虛擬機具備類似的資源隔離和分配優點

不一樣:

  • 容器虛擬化的是操做系統,虛擬機虛擬化的是硬件。
  • 傳統虛擬機能夠運行不一樣的操做系統,容器只能運行同一類型操做系統
特性 容器 虛擬機
啓動 秒級 分鐘級
硬盤使用 通常爲MB 通常爲GB
性能 接近原生 弱於
系統支持量 單機支持上千個容器 通常幾十個
相關文章
相關標籤/搜索