docker經常使用命令

添加鏡像加速器

# 在/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
相關文章
相關標籤/搜索