Docker筆記整理(1)

虛擬化技術

虛擬化的劃分

  • 應用虛擬化
  • 平臺虛擬化linux

    1. 徹底虛擬化
    2. 硬件輔助虛擬化
    3. 部分虛擬化
    4. 準虛擬化
    5. 操做系統虛擬化 Docker的位置
幫助文檔 docker [OPTIONS] --help

Docker核心

早期: Linux Containers 簡稱 LXC技術
0.9版本之後: libcontainer libcontainerdocker

安裝流程

Ubuntu

卸載舊版本

舊版本的Docker稱爲docker或者docker-engineubuntu

sudo apt-get remove docker \
            docker-engine \
            docker.io

Ubuntu 14.04 可選內核模塊

sudo apt-get update

sudo apt-get install \
            linux-image-extra-$(uname -r) \
            linux-image-extra-virtual

添加國內源

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

安裝 Docker CE

sudo apt-get update
sudo apt-get install docker-ce

使用腳本安裝bash

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

啓動 Docker CE

sudo systemctl enable docker
sudo systemctl start docker
ubuntu 14.04
sudo service docekr start

創建docker用戶組curl

sudo groupadd docker
# 將當前用戶加入docker用戶組
sudo usermod -aG docker $USER

測試安裝

docker run hello-world

鏡像篇

# 查看鏡像
docker images [OPTIONS] [REPOSITORY[:TAG]]

# -a -all bool 列出全部鏡像文件,包括臨時 默認false
# --digests bool 列出全部鏡像文件的數字標識 默認爲false
# -f --filter list 過濾規則
# --format string 輸出格式,相似Golang的template
# --no-trunc bool 不對輸出結果太長的進行截斷 默認爲false
# -q --quiet bool 僅輸出id 默認爲false

# 拉取鏡像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

asciicast

# 添加鏡像標籤
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 查看該鏡像的詳細信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]

asciicast

# 查看鏡像的每一個層
docker history [OPTIONS] IMAGE

asciicast

# 搜索鏡像
docker search [OPTIONS] TERM
# --no-trunc bool 不對輸出結果太長的進行截斷 默認爲false
# --limit int 最大搜索結果長度

# 刪除鏡像
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 若是鏡像有容器,能夠使用-f強勢刪除,但不推薦

# 建立鏡像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# -a --author string 做者
# -c --change list 提交時執行的指令
# -m --message string 提交信息
# -p --pause bool 提交時暫停容器運行

asciicast

# 將容器導出到歸檔文件
docker export [OPTIONS] CONTAINER
# -o --output string 寫入到文件

# 將歸檔容器導入爲鏡像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
# -c --change list 提交時執行的指令
# -m --message string 提交信息

asciicast

# 存儲鏡像
docker save [OPTIONS] IMAGE [IMAGE...]
# -o --output string 寫入到文件

# 加載鏡像
docker load [OPTIONS]
# -i --input string 文件加載

asciicast

鏡像總結

最後,上一張思惟導圖來總結鏡像篇的知識點

clipboard.png

容器篇

啓動容器的過程

  1. 檢查本地是否有鏡像
  2. 利用鏡像建立容器,並啓動該容器
  3. 分配一個文件系統給容器,並在只讀的鏡像層掛載一層可讀寫層
  4. 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器
  5. 從網橋的地址池配置一個ip給容器
  6. 執行用戶指定的應用程序
  7. 執行完畢後自動終止
# 建立容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 處於運行狀態
# -d --detach 守護態運行

# 建立容器
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
# 處於暫停狀態
# 查看容器
docker ps [OPTIONS]

# 中止容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
# -t --time int 等待數秒後中止 默認爲10秒

# 啓動容器
docker start [OPTIONS] CONTAINER [CONTAINER...]

# 重啓容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]

# 刪除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
# -v --volumes 刪除volumes

asciicast

# 在運行中的容器執行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# -e --env list 配置環境
# -i --interactive 打開標準輸入流
# -t --tty 分配僞終端
# -u --user string 用戶名或者UID

# 綁定輸入,輸出和錯誤流
docker attach [OPTIONS] CONTAINER
# --detach-key string 退出attach模式快捷鍵
# --no-stdin 不綁定輸入流
擴展: 使用nsenter進入容器 四種進入容器的方法

asciicast

容器總結

最後,上一張思惟導圖來總結鏡像篇的知識點

clipboard.png

相關文章
相關標籤/搜索