添加鏡像加速器
# 在/etc/docker/daemon.json中添加下面內容(若是daemon.json不存在,請新建)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
# 重啓服務
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
鏡像操做
虛懸鏡像
# 顯示虛懸鏡像
docker image ls -f dangling=true
# 清理鏡像
docker image prune
顯示鏡像
# 顯示頂級鏡像
docker images
# 顯示包括中間層鏡像在內的全部鏡像
docker images -a
# 根據倉庫名列出鏡像
docker images ubuntu
# 列出特定的某個鏡像,也就是說指定倉庫名和標籤
docker images ubuntu:18.04
# 查看mongo:3.2以後安裝的鏡像
docker image ls -f since=mongo:3.2
# 查看mongo:3.2以前安裝的鏡像
docker image ls -f before=mongo:3.2
# 經過LABEL過濾鏡像
docker image ls -f label=com.example.version=0.1
# 顯示全部鏡像的ID
docke images -aq
# 列出鏡像ID和倉庫名
docker images --format "{{.ID}}: {{.Repository}}"
# 表格等距顯示,而且有標題行,和默認同樣
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
# 顯示摘要
docker images --digests
刪除鏡像
# 根據ID刪除鏡像(docker image rm 不必定都會產生刪除鏡像的行爲,有可能僅僅是取消了某個標籤而已)
docker image rm ID前三個字母
# 根據鏡像名刪除鏡像
docker image rm centos
# 根據摘要刪除鏡像
# 配合docker images進行鏡像刪除
docker image rm $(docker images -q mysql)
運行鏡像
- 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
- 利用鏡像建立並啓動一個容器
- 分配一個文件系統,並在只讀的鏡像層外面掛載一層可讀寫層
- 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
- 從地址池配置一個 ip 地址給容器
- 執行用戶指定的應用程序
- 執行完畢後容器被終止
# 運行指定鏡像, 指定端口並命名
docker run --name 容器名 -d -p 本機端口:鏡像內部端口 鏡像名:Tag
容器操做
啓動容器
# 輸出一個 「Hello World」,以後終止容器。(和本地執行 echo "hello world" 沒有區別)
docker run ubuntu:18.04 /bin/echo 'Hello world'
# 運行鏡像並啓動一個 bash 終端,容許用戶進行交互。
docker run -it ubuntu:18.04 /bin/bash
# 後臺運行容器
docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hel
lo world; sleep 1; done"
# 啓動已中止的容器
docker start 容器id
中止容器
docker stop 容器id或名
刪除已中止鏡像
docker container prune
獲取容器的輸出信息
docker container logs 容器id或名 字
進入正在運行的容器
docker attach 容器id或名
docker exec -it 容器id或名 bash
attach 和 exec 的區別:
attach後執行exit會中止容器的運行
exec後執行exit不會中止容器的運行
比較鏡像的變更
docker diff 鏡像名
將容器保存成鏡像
docker commit -a "Username <Email>" -m "說明信息" 容器名 鏡像名:tag
導出容器
docker export 鏡像id > xxx.tar
導入容器
cat ubuntu.tar | docker import - test/ubuntu:v1.0
# 以經過指定 URL 或者某個目錄來導入
docker import http://example.com/exampleimage.tgz example/imagerepo
Dockerfile
docker build -t "鏡像名:Tag" . # .的做用是指定上下文的目錄
Docker Hub
# 登陸
docker login
# 搜索鏡像
docker search xxx
# 拉取鏡像
docker pull xxx
# 打標籤
docker tag ubuntu:18.04 username/ubuntu:18.04
# 推送鏡像
docker push username/ubuntu:18.04