sudo apt-get update sudo apt-get install docker-ce
sudo systemctl enable docker sudo systemctl start 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> ...]
所謂定製鏡像,那必定是以一個鏡像爲基礎,在其上進行定製。就像咱們以前運行了一個 nginx 鏡像的容器,再進行修改同樣,基礎鏡像是必須指定的。而 FROM 就是指定 基礎鏡像,所以一個 Dockerfile 中 FROM 是必備的指令,而且必須是第一條指令shell
RUN
指令是用來執行命令行命令的。因爲命令行的強大能力,RUN 指令在定製鏡像時是最經常使用的指令之一。其格式有兩種:ubuntu
RUN
<命令>,就像直接在命令行中輸入的命令同樣。剛纔寫的 Dockerfile 中的 RUN 指令就是這種格式。RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
RUN ["可執行文件", "參數1", "參數2"]
,這更像是函數調用中的格式。docker build [選項] <上下文路徑/URL/->
docker build - < Dockerfile
或安全
cat Dockerfile | docker build -
實際上 Dockerfile
的文件名並不要求必須爲 Dockerfile
,並且並不要求必須位於上下文目錄中,好比能夠用 -f ../Dockerfile.php
參數指定某個文件做爲 Dockerfile
socket
docker build -f xxx -t xxx:version .
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS說明:函數
將主機/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/
$ 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