baicai

白菜

一个勤奋的代码搬运工!

安裝docker及簡單的使用

docker 的介紹,裡面包括了 3 個基本概念#

1.1 docker 主要由鏡像和容器構成#

鏡像(Image)鏡像好比一個模板,相當於一個文件系統

容器(Container): 容器需要通過鏡像來創建。鏡像和容器就像是面向對象中的類和實例一樣。容器可以被創建 / 啟動 / 停止 / 刪除等

倉庫(Repository): 倉庫就是存放鏡像的地方,分為私有倉庫和公有倉庫。類似 git

1.2 docker 的運行原理#

docker 是一個 Client-Server 結構的系統,docker 的守護進程運行在主機上,通過 socket 從客戶端訪問。dockerServer 接收到 docker-Client 的指令,就會執行這個命令。

一. Mac 系統 docker 的安裝#

1.1 homebrew 的 cask 應支持 Docker for Mac, 所以可以直接安裝 brew cask install docker

1.2 也可以直接到官網下載,https://download.docker.com/mac/stable/Docker.dmg

1.3 docker 的參考文檔:https://docs.docker.com

1.4 dockerhub 查找鏡像源地址:https://hub.docker.com

二. docker 的使用#

1.1 查看版本#

docker --version

docker-compose --version 

docker-machine --version

1.2 查看 docker 系統信息(包括鏡像和容器的數量等)#

docker info

1.3 幫助命令#

docker help

1.4 查看 cpu 的狀況#

docker stats

三. docker 的基本命令#

鏡像相關命令:

1.1 查看鏡像可用版本(nginx 為例)#

docker search nginx

1.2 下載一個鏡像#

docker pull nginx:latest #(:後面跟鏡像版本)

1.3 運行一個 nginx 服務器#

docker run -d -p 81:80 --name webserver nginx

可選項:

#--name webserver :容器名稱,用來區分容器

#-p 81:80 :端口進行映射,將本地的81端口映射到容器內部的80端口

#-v ~/nginx/html:/usr/share/nginx/html 數據卷掛載ro/rw,將主機項目中的目錄掛載到容器的目錄下,默認rw只能在宿主機外改變,容器內部不能改變

#-d:設置容器中在後臺一直運行

#-it:使用交互方式運行,進入容器查看內容

#-P:隨機端口

#-e:環境配置設置

注意:後臺啟動運行,必須要有一個前臺進程,docker 發現沒有應用,就會自動停止

重點:數據卷掛載分為具名 / 匿名 / 指定路徑掛載,容器數據卷掛載可以實現數據共享,容器的持久化和同步操作,可以使用 docker volume 查看卷的情況,可以使用 volumes-from 實現多個容器之間的數據共享。

1.4 停止 nginx 服務#

docker stop webserver(容器ID)

1.5 刪除 nginx 服務#

docker rm webserver

1.6 啟動 / 重啟 nginx 服務#

docker start/restart webserver

1.7 列出所有鏡像 (列表包含了 倉庫名、標籤、鏡像 ID、創建時間 以及 所佔用的空間)#

docker images ls

說明:

REPOSITORY 鏡像的倉庫源

TAG 鏡像的標籤

IMAGE ID 鏡像的id

CREATED 鏡像的創建時間

SIZE 鏡像的大小

可選項:

-a:列出所有的鏡像

-q:只顯示鏡像的id

注意:鏡像 ID 是唯一標識,一個鏡像可以對應多個標籤

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

docker system df

1.9 刪除鏡像#

指定鏡像:

docker rmi [鏡像名稱/鏡像短ID/鏡像長ID/鏡像摘要]

多個鏡像:

docker rmi 鏡像ID 鏡像ID 鏡像ID

全部鏡像:

docker rmi $(docker images -aq)

2.0 刪除 docker images ls 命令配合 刪除所有倉庫名為 redis 的鏡像#

docker  rmi $(docker images ls -q redis)

2.1 查看鏡像運行記錄#

docker history 鏡像id

容器相關命令

1.1 列出容器#

docker ps 

可選項:

#-a:顯示所有的容器,包括未運行的

#-l:顯示最近創建的容器

#-n:列出最近創建的n個容器

#-q:只顯示容器的編號

1.2 進入容器#

docker exec -it [容器名稱] /bin/bash

docker atthch 容器id

區別:docker exec 進入容器後開啟一個新的終端,可以在裡面操作;docker attach 進入容器正在執行的終端,不會啟動新的進程

1.3 退出容器#

容器停止退回主機

exit 

容器不停止推出

ctrl+p+q 

1.4 刪除容器#

指定容器:

docker rm [容器id]

多個容器:

docker rm 容器id 容器id 容器id

所有容器:

docker rm $(docker ps -aq)    

docker ps -a -q|xargs docker rm

注意:不能刪除正在運行的容器,要刪除正在運行的容器需要加 -f 參數,docker rm -f 容器 id

1.5 啟動 / 重啟容器#

docker start/restart 容器id

1.6 停止 / 強制停止容器#

docker stop/kill 容器id

1.7 查看容器日誌#

docker logs -f -t --tail 100 容器id 

#--tail後面必須加參數條數

1.8 查看容器中的進程信息#

docker top 容器id

1.9 查看容器的元數據(重要命令)#

docker inspect 容器id

2.0 從容器上拷貝數據到主機上#

docker cp 容器id:容器內路徑 主機路徑

四. Dockerfile 的指令#

FROM 基礎鏡像,一切從這裡開始

MAINTAINER 鏡像的作者 姓名<郵箱>

RUN 鏡像構建需要運行的命令

ADD 步驟,添加內容

WORKDIR 鏡像的工作目錄

VOLUME 掛載的目錄

EXPOST 端口配置

CMD 指定容器啟動要運行的命令,只有最後一個會生效,可被替代

ENTRYPOINT 指定這個容器啟動要運行的命令,可以追加命令

ONBUILD 當構建一個被繼承的Dockerfile時會運行

COPY 類似ADD將我們文件拷貝到鏡像中

ENV 構建的時候設置環境變量
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。