先上圖:

Dcoker基本概念
Docker 包括三個基本概念:
-
鏡像(
Image):Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時准備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。 -
容器(
Container):鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。 -
倉庫(
Repository):倉庫(Repository)類似Git的遠程倉庫,集中存放鏡像文件。
三者關系可以用下圖表示:

接下來看一看Docker的常用命令。
服務
- 查看Docker版本信息
docker version
- 查看docker簡要信息
docker -v
- 啟動Docker
systemctl start docker
- 關閉docker
systemctl stop docker
- 設置開機啟動
systemctl enable docker
- 重啟docker服務
service docker restart
- 關閉docker服務
service docker stop
鏡像
鏡像倉庫
Docker Hub 等鏡像倉庫上有大量的高質量的鏡像可以用,可以從倉庫獲取鏡像。
- 檢索鏡像
docker search 關鍵字
- 拉取鏡像
docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標簽]
鏡像管理
- 列出鏡像
docker image ls
docker images
- 刪除鏡像
# 刪除指定鏡像
docker rmi <鏡像Id>
- 導出鏡像
# 將鏡像保存為歸檔文件
docker save
- 導入鏡像
docker load
Dockerfile構建鏡像
Dockerfile 是一個文本格式的配 文件,用戶可以使用 Dockerfile 來快速創建自定義的鏡像。
Dockerfile 由一行行行命令語句組成,並且支持以#開頭的注釋行.
Dockerfile常見指令
下面是Dockerfile中一些常見的指令:
-
FROM:指定基礎鏡像
-
RUN:執行命令
-
COPY:復制文件
-
ADD:更高級的復制文件
-
CMD:容器啟動命令
-
ENV:設置環境變量
-
EXPOSE:暴露端口
其它的指令還有ENTRYPOINT、ARG、VOLUME、WORKDIR、USER、HEALTHCHECK、ONBUILD、LABEL等等。
以下是一個Dockerfile實例:
FROM java:8
MAINTAINER "jinshw"<jinshw@qq.com>
ADD mapcharts-0.0.1-SNAPSHOT.jar mapcharts.jar
EXPOSE 8080
CMD java -jar mapcharts.jar
鏡像構建
docker build
鏡像運行
鏡像運行,就是新建並運行一個容器。
docker run [鏡像ID]
容器
容器生命周期
- 啟動:啟動容器有兩種方式,一種是基於鏡像新建一個容器並啟動,另外一個是將在終止狀態(stopped)的容器重新啟動。
# 新建並啟動
docker run [鏡像名/鏡像ID]
# 啟動已終止容器
docker start [容器ID]
- 查看容器
# 列出本機運行的容器
$ docker ps
# 列出本機所有的容器(包括停止和運行)
$ docker ps -a
- 停止容器
# 停止運行的容器
docker stop [容器ID]
# 殺死容器進程
docker kill [容器ID]
- 重啟容器
docker restart [容器ID]
- 刪除容器
docker rm [容器ID]
進入容器
進入容器有兩種方式:
# 如果從這個 stdin 中 exit,會導致容器的停止
docker attach [容器ID]
# 交互式進入容器
docker exec [容器ID]
進入容器通常使用第二種方式,docker exec后面跟的常見參數如下:
- d, --detach 在容器中后台執行命令;
- i, --interactive=true I false :打開標准輸入接受用戶輸入命令
導出和導入
- 導出容器
#導出一個已經創建的容器到一個文件
docker export [容器ID]
- 導入容器
# 導出的容器快照文件可以再導入為鏡像
docker import [路徑]
其它
- 查看日志
# 導出的容器快照文件可以再導入為鏡像
docker logs [容器ID]
這個命令有以下常用參數
-f : 跟蹤日志輸出
--since :顯示某個開始時間的所有日志
-t : 顯示時間戳
--tail :僅列出最新N條容器日志
- 復制文件
# 從主機復制到容器
sudo docker cp host_path containerID:container_path
# 從容器復制到主機
sudo docker cp containerID:container_path host_path
參考:
【1】:Docer從入門到實踐
【3】:docker常用命令整理
【4】:Docker 常用命令與操作
【6】:docker 常用命令
