Docker-使用Docker
從``Docker Hub`鏡像來源下載鏡像
https://hub.docker.com/ 從這個網(wǎng)址下載鏡像
Docker命令
基礎(chǔ)命令
Pull命令
| 命令: |
|---|
docker [``image]pullNAME[:TAG`] |
NAME: 是鏡像倉庫名稱(用來區(qū)分鏡像), TAG是鏡像的標(biāo)簽(標(biāo)示版本信息), 通常情況下, 需要包括 名稱 + 標(biāo)簽 |
| 注意: |
1. 如果不顯示指定 TAG, 則會默認(rèn)選擇 latest
|
2. 鏡像的倉庫名稱中還應(yīng)該添加倉庫地址(``registry), 作為前綴, 否則只是默認(rèn)Docker Hub`服務(wù) |
例子: docker pull hub.c.163.com/public/ubuntu: 18.04
|
| 子命令: |
| ``-a, --all-tags=true/false`: 是否獲取倉庫中的所有鏡像, 默認(rèn)為否 |
--disable-content-trust: 取消鏡像的內(nèi)容校驗, 默認(rèn)為真 |
**注意: ** 有時需要鏡像代理服務(wù)來加速Docker鏡像獲取過程, 可以在Docker服務(wù)啟動配置中增加--registry-mirror=proxy_URL(如: https://registry.docker.cn.com) |
image [ls]命令
| 命令 |
|---|
docker images ls 或者 docker image或docker images
|
| 內(nèi)容看下面的表 |
| 注意: |
| ID唯一標(biāo)識了鏡像, 一般可以使用該ID的前若干個字符串區(qū)分串來替代完整的ID |
| 鏡像的大小信息只是表示了, 該鏡像的邏輯大小, 實際上由于相同的鏡像層本地只會存儲一部分 |
| 子命令: |
-a, --all=true/false: 列出所有(包括臨時文件)鏡像文件, 默認(rèn)為否 |
--digests=true/false: 列出鏡像的數(shù)字摘要值, 默認(rèn)為否 |
-f, --filter=[]: 過濾列出鏡像, 如: dangling = true只顯示沒有被使用的鏡像, 也可以指定帶有特定標(biāo)注的鏡像等 |
--format="TEMPLATE": 控制臺輸出格式, 如.ID, 代表ID信息, .Repository代表倉庫信息等 |
--no-trunc=true/false: 對輸出的結(jié)果中太長的部分是否進行截斷 |
-q, --quiet=true/false: 僅輸出ID信息, 默認(rèn)為否 |
| 倉庫字段 | 描述 |
|---|---|
REPOSITORY |
來自哪個倉庫 |
TAG |
鏡像標(biāo)簽信息, latest表示不同的版本信息, 標(biāo)簽只能是標(biāo)記, 不能識別鏡像內(nèi)容 |
IMAGE ID |
鏡像的ID, 如果兩個鏡像的id相同, 說明他們只想了同一個鏡像, 只是不同的標(biāo)簽 |
CREATED |
創(chuàng)建時間 |
SIZE |
鏡像大小 |
tag命令
| 命令 |
|---|
docker tag: 為本地鏡像任意添加新的標(biāo)簽 |
例子: docker tag ubuntu: latest myubuntu:latest, 再次用images查看本機上的鏡像信息, 就多了一個 |
myubuntu: latest標(biāo)簽的鏡像的信息, 用戶可以直接使用myubuntu: latest來表示這個鏡像了 |
inspect命令
| 命令 |
|---|
docker [image] inspect name |
使用Docker[image] inspect name命令可以獲取該鏡像的詳細(xì)信息, 包括制作者, 各層的數(shù)字摘要等 |
history命令
| 命令 |
|---|
docker history imageName:TAG |
既然鏡像文件由多個層組成, 那么怎么知道各個層的內(nèi)容具體是什么, 可以用history命令, 該命令將列出各個層的信息, 這里注意: 因為過長被截斷了怎么辦, 可以用用--no-trunc來輸出完整命令 |
search命令
| 命令 |
|---|
docker search [option] keyword |
使用docker search命令可以搜索Docker Hub官方倉庫中的鏡像 |
| 子命令 |
-f, --filter filter: 過濾輸出內(nèi)容 |
--format string: 格式化輸出內(nèi)容 |
--limit int: 限制輸出結(jié)果個數(shù), 默認(rèn)為25個 |
--no-trunc: 不截斷輸出結(jié)果 |
rm命令
| 命令 |
|---|
docker rm 容器名或docker image rm 鏡像名
|
使用docker rm或docker rmi刪除鏡像或容器 |
| 子命令 |
-f, -force: 強制刪除鏡像, 即使有容器依賴他 |
--no-prune: 不要清理未帶標(biāo)簽的父鏡像 |
| 注意 |
當(dāng)一個鏡像的TAG是latest鏡像的時候, latest是一個鏡像副本, 當(dāng)有一個latest和一個具體的tag的時候不會刪除latest, 如果只有一個鏡像的時候, 這個時候會刪除掉latest
|
prune命令
| 命令 |
|---|
docker image prune |
使用Docker一段時間后, 系統(tǒng)中可能會遺留一些臨時的鏡像文件,以及一些沒有被使用的鏡像 |
| 子命令 |
-a, -all: 刪除所有無用的命令, 不光是臨時鏡像 |
-filter filter: 只清理符合給定的過濾器的鏡像 |
-f, -force: 強制刪除鏡像, 而不進行提示確認(rèn) |
鏡像
創(chuàng)建鏡像
commit命令
| 命令 |
|---|
docker [container] commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] |
| 這是基于以有的容器進行創(chuàng)建 |
| 子命令 |
-a, --author="": 作者信息 |
-c, --change=[]: 提交的時候執(zhí)行Dockerfile指令, 包括CMD/ENTRYPOINT/ENV/EXPOSE/LABEL/ONBUILD/USER/VOLUME/WORKDIR等 |
-m, --message="": 提交信息 |
-p, --pause=true: 提交時暫停容器運行 |
注意: [container] 這里是可選的, 書中加上了是錯誤的寫法
|
import命令
| 命令 |
|---|
docker [image/container] import [OPTIONS] file/URL/-[REPOSITORY[:TAG]] |
| 基于本地模塊進行導(dǎo)入 |
例如: 下載了 ubuntu-18.04的壓縮包, 之后可以直接使用一下命令來導(dǎo)入 |
$ cat ubuntu-18.04-x86_64-minimal.tar.gz / docker import -ubuntu:18.04 |
build命令
| 命令 |
|---|
docker [image] build |
基于Dockerfile創(chuàng)建鏡像 |
FROM debian:stretch-slim
LABEL version:"1.0" maintainer="docker user <docker_user@github>"
RUN apt-get update && \
apt-get install -y python3 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
存出和載入鏡像
save命令
| 命令 |
|---|
docker [image] save |
導(dǎo)出鏡像到指定文件中, 支持-o, -output string參數(shù) |
例子: docker save -o ubuntu_18.04.tar ubuntu:18.04
|
load命令
| 命令 |
|---|
docker [image] load |
將導(dǎo)出的tar文件再導(dǎo)入到本地鏡像庫, 支持-i, --input string
|
例子: docker load -i ubuntu_18.04.tar/docker load < ubuntu_18.04.tar
|
上傳鏡像
上傳鏡像
| 命令 |
|---|
docker [image] push NAME:[TAG] / [REGISTRY_HOST[:REGISTRY_POST]/]NAME[:TAG] |
上傳到Docker Hub官方倉庫(需要登錄) 登錄信息記錄到~/.docker目錄下 |