Docker 鏡像(Image),就至關因而一個root文件系統。
好比官方鏡像ubuntu:1 6.04就包含了完整的一套Ubuntu16.04最小系統的root文件系統。docker
鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的類和對象同樣,
鏡像是靜態的定義,容器是鏡像運行時的實體。容器能夠被建立、啓動、中止、刪除、暫停等。shell
倉庫可當作一個代碼控制中心,用來保存鏡像。json
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable 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 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 容器名稱
思考:ubuntu
數據卷vim
數據卷做用centos
docker run ... -v 宿主機目錄(文件):容器內目錄(文件)
數據卷容器就是一個正常的容器,專門用來提供數據卷供其它容器掛載的。瀏覽器
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
宿主機的一個目錄或文件性能
數據卷做用
建立一個容器, 掛載一個目錄, 讓其餘容器繼承自該容器( --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 pull registry
docker run -id --name=registry -p 5000:5000 registry
{"repositories":[]}
表示私有倉庫搭建成功vim /etc/docker/daemon.json
在上述文件中添加一個key,保存退出。此步用於讓docker 信任私有倉庫地址;注意將私有倉庫服務器ip修改成本身私有倉庫服務器真實ip
{"insecure-registries":["私有倉庫服務器ip: 5000"]}
systemctl restart docker docker start registry
相同:
不一樣:
特性 | 容器 | 虛擬機 |
---|---|---|
啓動 | 秒級 | 分鐘級 |
硬盤使用 | 通常爲MB | 通常爲GB |
性能 | 接近原生 | 弱於 |
系統支持量 | 單機支持上千個容器 | 通常幾十個 |