Docker安裝及幾個命令

安裝docker

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

啓動docker

sudo systemctl enable docker
sudo systemctl start docker

創建 docker 用戶組

默認狀況下,docker 命令會使用 Unix socket 與 Docker 引擎通信。而只有 root 用戶和 docker 組的用戶才能夠訪問 Docker 引擎的 Unix socket。出於安全考慮,通常 Linux 系統上不會直接使用 root 用戶。所以,更好地作法是將須要使用 docker 的用戶加入 docker 用戶組。php

創建 docker 組:html

sudo groupadd docker

將當前用戶加入 docker 組:nginx

sudo usermod -aG docker $USER

獲取鏡像

docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標籤]

列出鏡像

docker image ls

REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
redis                latest              5f515359c7f8        5 days ago          183 MB
nginx                latest              05a60462f8ba        5 days ago          181 MB
mongo                3.2                 fe9198c04d62        5 days ago          342 MB
<none>               <none>              00285df0df87        5 days ago          342 MB
ubuntu               18.04               f753707788c5        4 weeks ago         127 MB
ubuntu               latest              f753707788c5        4 weeks ago         127 MB

列表包含了倉庫名標籤鏡像 ID建立時間 以及 所佔用的空間redis

查看鏡像、容器、數據卷所佔用的空間

docker system df

TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              24                  0                   1.992GB             1.992GB (100%)
Containers          1                   0                   62.82MB             62.82MB (100%)
Local Volumes       9                   0                   652.2MB             652.2MB (100%)
Build Cache                                                 0B                  0B

虛懸鏡像

這類鏡像本來是有鏡像名和標籤的,原來爲 mongo:3.2,隨着官方鏡像維護,發佈了新版本後,從新 docker pull mongo:3.2 時,mongo:3.2 這個鏡像名被轉移到了新下載的鏡像身上,而舊的鏡像上的這個名稱則被取消,從而成爲了 <none>。除了 docker pull 可能致使這種狀況,docker build 也一樣能夠致使這種現象。因爲新舊鏡像同名,舊鏡像名稱被取消,從而出現倉庫名、標籤均爲 <none> 的鏡像。這類無標籤鏡像也被稱爲 虛懸鏡像(dangling image) ,能夠用下面的命令專門顯示這類鏡像:docker

docker image ls -f dangling=true

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              00285df0df87        5 days ago          342 MB

#刪除虛懸鏡像

docker image prune

刪除本地鏡像

docker image rm [選項] <鏡像1> [<鏡像2> ...]

FROM 指定基礎鏡像

所謂定製鏡像,那必定是以一個鏡像爲基礎,在其上進行定製。就像咱們以前運行了一個 nginx 鏡像的容器,再進行修改同樣,基礎鏡像是必須指定的。而 FROM 就是指定 基礎鏡像,所以一個 Dockerfile 中 FROM 是必備的指令,而且必須是第一條指令shell

RUN 執行命令

RUN指令是用來執行命令行命令的。因爲命令行的強大能力,RUN 指令在定製鏡像時是最經常使用的指令之一。其格式有兩種:ubuntu

  • shell 格式:RUN <命令>,就像直接在命令行中輸入的命令同樣。剛纔寫的 Dockerfile 中的 RUN 指令就是這種格式。
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
  • exec 格式:RUN ["可執行文件", "參數1", "參數2"],這更像是函數調用中的格式。

構建鏡像

docker build [選項] <上下文路徑/URL/->

從標準輸入中讀取 Dockerfile 進行構建

docker build - < Dockerfile

安全

cat Dockerfile | docker build -

實際上 Dockerfile 的文件名並不要求必須爲 Dockerfile,並且並不要求必須位於上下文目錄中,好比能夠用 -f ../Dockerfile.php 參數指定某個文件做爲 Dockerfilesocket

docker build -f xxx -t xxx:version .

docker cp 用於容器與主機之間的數據拷貝

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS說明:函數

  • -L :保持源目標中的連接
實例

將主機/www/runoob目錄拷貝到容器96f7f14e99ab的/www目錄下。

docker cp /www/runoob 96f7f14e99ab:/www/

將主機/www/runoob目錄拷貝到容器96f7f14e99ab中,目錄重命名爲www。

docker cp /www/runoob 96f7f14e99ab:/www

將容器96f7f14e99ab的/www目錄拷貝到主機的/tmp目錄中。

docker cp  96f7f14e99ab:/www /tmp/

logs日誌查看

$ docker logs [OPTIONS] CONTAINER
  Options:
        --details        顯示更多的信息
    -f, --follow         跟蹤實時日誌
        --since string   顯示自某個timestamp以後的日誌,或相對時間,如42m(即42分鐘)
        --tail string    從日誌末尾顯示多少行日誌, 默認是all
    -t, --timestamps     顯示時間戳
        --until string   顯示自某個timestamp以前的日誌,或相對時間,如42m(即42分鐘)
例子:

查看指定時間後的日誌,只顯示最後100行:

$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

查看最近30分鐘的日誌:

$ docker logs --since 30m CONTAINER_ID

查看某時間以後的日誌:

$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

查看某時間段日誌:

$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
相關文章
相關標籤/搜索