docker系統複習

1. docker前言

  • 開發和運維之間的矛盾,環境統一性問題
  • 開發人員利用 docker 可以消除協作編碼時“在我的機器上可正常工作”的問題
  • vm是一個運行在宿主機之上的完整的操作系統,vm運行自身操作系統(guest os)會佔用較多的CPU、內存、硬盤資源
  • docker不同於vm,只包含應用程序以及依賴庫,基本不消耗額外的系統資源,系統的開銷儘量小,不需要額外的 hypervisor 支持,內核級的虛擬化,實現更高的性能和效率
  • docker 是一種容器技術的實現,在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的創建和維護,使得容器技術比虛擬機技術更爲輕便、快捷
  • 理念:一次封裝,到處運行
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

2. docker三要素

  • 鏡像 image

docker 鏡像是一個只讀的模板
鏡像可以用來創建 docker 實例
一個鏡像可以創建多個容器

  • 容器 container

容器是用鏡像創建的實例
在這裏插入圖片描述
容器的定義和鏡像幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層是可讀可寫的

  • 倉庫 repository

在這裏插入圖片描述

3. docker安裝

在centos上使用yum安裝

  1. 訪問官網手冊
    https://docs.docker.com/engine/install/centos/
  2. 安裝依賴和添加源
sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安裝docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
  1. 啓動docker
 sudo systemctl start docker
 docker version
  1. 測試hello world
sudo docker run hello-world

注:

Docker守護程序綁定到Unix套接字而不是TCP端口。默認情況下,Unix套接字由用戶擁有root,其他用戶只能使用來訪問它sudo。Docker守護程序始終以root用戶身份運行
如果你不想在前言docker與命令sudo,創建一個名爲UNIX組docker和用戶添加到它。Docker守護程序啓動時,它會創建一個可由該docker組成員訪問的Unix套接字

docker machine 安裝 docker

可以在虛擬主機上安裝docker的工具,並可以使用 docker-machine 命令來管理主機
類似vagrant

  • 命令
 docker-machine ls
 docker-machine create --driver virtualbox name
//--driver:指定用來創建機器的驅動類型,這裏是 virtualbox
//在本地虛機安裝,會去下載boot2docker.iso文件(已安裝了docker的系統鏡像文件),然後安裝創建
 docker-machine ip name
 docker-machine stop name
 docker-machine start name
 docker-machine ssh name
  • 映射到本地
    在這裏插入圖片描述
  • docker machine 安裝 docker 到阿里雲上

非官方支持的第三方驅動
https://github.com/docker/docker.github.io/blob/master/machine/AVAILABLE_DRIVER_PLUGINS.md
阿里雲驅動使用
https://github.com/AliyunContainerService/docker-machine-driver-aliyunecs

參考

阿里雲docker ce安裝手冊
https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.1ed51991BdQ9Ml

4. 鏡像加速

  • 阿里雲
    在這裏插入圖片描述
  • 網易雲(查看官網)

5. docker 命令

  • 幫助命令
docker version
docker info
docker --help
  • 鏡像命令
    docker images
    在這裏插入圖片描述
    docker search
    在這裏插入圖片描述
    docker pull
    在這裏插入圖片描述
    docker rmi
    在這裏插入圖片描述
  • 容器命令
    新建並啓動容器
    在這裏插入圖片描述
    在這裏插入圖片描述
    列出當前所有正在運行的容器
    在這裏插入圖片描述
    在這裏插入圖片描述
    退出容器
    在這裏插入圖片描述
    在這裏插入圖片描述
    刪除已停止的容器
    在這裏插入圖片描述在這裏插入圖片描述
    啓動守護式容器
    在這裏插入圖片描述在這裏插入圖片描述
    在這裏插入圖片描述
    進入正在運行的容器並以命令行交互
    在這裏插入圖片描述
    exec是在外面讓容器執行命令
    在這裏插入圖片描述
    從容器內拷貝文件到主機上
    在這裏插入圖片描述
    提交容器成鏡像
    在這裏插入圖片描述
    總結:
    在這裏插入圖片描述
attach    Attach to a running container                 # 當前 shell 下 attach 連接指定運行鏡像
build     Build an image from a Dockerfile              # 通過 Dockerfile 定製鏡像
commit    Create a new image from a container changes   # 提交當前容器爲新的鏡像
cp        Copy files/folders from the containers filesystem to the host path   #從容器中拷貝指定文件或者目錄到宿主機中
create    Create a new container                        # 創建一個新的容器,同 run,但不啓動容器
diff      Inspect changes on a container's filesystem   # 查看 docker 容器變化
events    Get real time events from the server          # 從 docker 服務獲取容器實時事件
exec      Run a command in an existing container        # 在已存在的容器上運行命令
export    Stream the contents of a container as a tar archive   # 導出容器的內容流作爲一個 tar 歸檔文件[對應 import ]
history   Show the history of an image                  # 展示一個鏡像形成歷史
images    List images                                   # 列出系統當前鏡像
import    Create a new filesystem image from the contents of a tarball # 從tar包中的內容創建一個新的文件系統映像[對應export]
info      Display system-wide information               # 顯示系統相關信息
inspect   Return low-level information on a container   # 查看容器詳細信息
kill      Kill a running container                      # kill 指定 docker 容器
load      Load an image from a tar archive              # 從一個 tar 包中加載一個鏡像[對應 save]
login     Register or Login to the docker registry server    # 註冊或者登陸一個 docker 源服務器
logout    Log out from a Docker registry server          # 從當前 Docker registry 退出
logs      Fetch the logs of a container                 # 輸出當前容器日誌信息
port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口對應的容器內部源端口
pause     Pause all processes within a container        # 暫停容器
ps        List containers                               # 列出容器列表
pull      Pull an image or a repository from the docker registry server   # 從docker鏡像源服務器拉取指定鏡像或者庫鏡像
push      Push an image or a repository to the docker registry server    # 推送指定鏡像或者庫鏡像至docker源服務器
restart   Restart a running container                   # 重啓運行的容器
rm        Remove one or more containers                 # 移除一個或者多個容器
rmi       Remove one or more images             # 移除一個或多個鏡像[無容器使用該鏡像纔可刪除,否則需刪除相關容器纔可繼續或 -f 強制刪除]
run       Run a command in a new container              # 創建一個新的容器並運行一個命令
save      Save an image to a tar archive                # 保存一個鏡像爲一個 tar 包[對應 load]
search    Search for an image on the Docker Hub         # 在 docker hub 中搜索鏡像
start     Start a stopped containers                    # 啓動容器
stop      Stop a running containers                     # 停止容器
tag       Tag an image into a repository                # 給源中鏡像打標籤
top       Lookup the running processes of a container   # 查看容器中運行的進程信息
unpause   Unpause a paused container                    # 取消暫停容器
version   Show the docker version information           # 查看 docker 版本號
wait      Block until a container stops, then print its exit code   # 截取容器停止時的退出狀態值

6. docker 鏡像

鏡像是一種輕量級、可執行的獨立軟件包,用來打包軟件運行環境和基於運行環境開發的軟件,它包含運行某個軟件所需的所有內容,包括代碼、運行時、庫、環境變量和配置文件

特點:
Docker鏡像都是隻讀的
當容器啓動時,一個新的可寫層被加載到鏡像的頂部。
這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”。

UnionFS(聯合文件系統)
在這裏插入圖片描述
docker鏡像加載原理
在這裏插入圖片描述
在這裏插入圖片描述
爲什麼 Docker 鏡像要採用這種分層結構
在這裏插入圖片描述

7. 數據卷

卷就是目錄或文件,存在於一個或多個容器中,由docker掛載到容器,但不屬於聯合文件系統,因此能夠繞過Union File System提供一些用於持續存儲或共享數據的特性
卷的設計目的就是數據的持久化,完全獨立於容器的生存週期,因此Docker不會在容器刪除時刪除其掛載的數據卷
特點:
1:數據卷可在容器之間共享或重用數據
2:卷中的更改可以直接生效
3:數據卷中的更改不會包含在鏡像的更新中
4:數據卷的生命週期一直持續到沒有容器使用它爲止
在這裏插入圖片描述

直接命令添加
直接命令添加
在這裏插入圖片描述
dockerfile添加
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
容器內的卷目錄對應的主機目錄地址哪?
在這裏插入圖片描述
備註:

docker掛載主機目錄,docker訪問出現cannot open directory : Permission denied
解決辦法:在掛載目錄的命令後多加一個 --privileged=true 參數即可

數據卷容器

命名的容器掛載數據卷,其它容器通過掛載這個容器(父容器)實現數據共享,掛載數據卷的容器,稱之爲數據卷容器

容器間傳遞共享(–volumes-from)
在這裏插入圖片描述
容器之間配置信息的傳遞,數據卷的生命週期一直持續到沒有容器使用它爲止

8. dockerfile

dockerfile是用來構建docker鏡像的構建文件,是由一系列命令和參數構成的腳本
在這裏插入圖片描述

dockerfile 基礎知識
在這裏插入圖片描述
Docker執行Dockerfile的大致流程
在這裏插入圖片描述
dockerfile 指令

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章