docker 知識點彙總

什麼是 Docker

Docker 簡介

Docker 核心概念以下:html

  1. Docker 引擎 (Docker Engine)
  2. Docker 客戶端 (Docker Client)
  3. Docker 鏡像 (Docker Images)
  4. Docker 容器 (Docker Containers)
  5. Docker 鏡像註冊中心 (Docker Registry)

Docker 的特色

  1. 快速運行java

  2. 節省資源python

    Docker 容器直接運行在 Docker 引擎之上,可直接利用宿主機硬件資源,無需佔用過多的系統開銷mysql

  3. 便於交付linux

    Docker 的交付物是鏡像,鏡像不只封裝了程序,還包含了運行程序的環境web

  4. 容易管理spring

    經過 Docker 客戶端直接操做 Docker 引擎,很是方便的管理 Docker 鏡像和容器sql

如何使用 Docker

鏡像的經常使用操做

  1. 列出鏡像docker

    [root@dev ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    centos              latest              ab9a80ab07d0        2 weeks ago         201.8 MB

    以上表格包含 5 個字段,其中

    • REPOSITORY 鏡像倉庫的名稱
    • TAG 鏡像的標籤,通常帶有版本或別名,這裏的 lastest 表示最新版本
    • IMAGE ID 表示鏡像的標識符,稱爲鏡像 ID ,具有惟一性
    • created 表示鏡像的建立時間
    • SIZE 大小
  2. 拉取鏡像 docker pull

  3. 搜索鏡像

    執行上面的命令,會輸出帶有 centos 關鍵字的鏡像倉庫。

    [root@dev ~]# docker search centos
    
    NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    centos                             The official build of CentOS.                   5070      [OK]
    ansible/centos7-ansible            Ansible on Centos7                              119                  [OK]
    jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x...   104                  [OK]
    consol/centos-xfce-vnc             Centos container with "headless" VNC sessi...   73                   [OK]
    imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              48                   [OK]
    centos/mysql-57-centos7            MySQL 5.7 SQL database server                   45
    tutum/centos                       Simple CentOS docker image with SSH access      43
    gluster/gluster-centos             Official GlusterFS Image [ CentOS-7 +  Glu...   38                   [OK]
    openshift/base-centos7             A Centos7 derived base image for Source-To...   37
    centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relationa...   36
    centos/python-35-centos7           Platform for building and running Python 3...   33
    kinogmt/centos-ssh                 CentOS with SSH                                 25                   [OK]
    openshift/jenkins-2-centos7        A Centos7 based Jenkins v2.x image for use...   20
    centos/php-56-centos7              Platform for building and running PHP 5.6 ...   17
    pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag nam...   10
    openshift/wildfly-101-centos7      A Centos7 based WildFly v10.1 image for us...   6
    openshift/jenkins-1-centos7        DEPRECATED: A Centos7 based Jenkins v1.x i...   4
    darksheer/centos                   Base Centos Image -- Updated hourly             3                    [OK]
    pivotaldata/centos-mingw           Using the mingw toolchain to cross-compile...   2
    pivotaldata/centos                 Base centos, freshened up a little with a ...   2
    blacklabelops/centos               CentOS Base Image! Built and Updates Daily!     1                    [OK]
    pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated ...   1
    smartentry/centos                  centos with smartentry                          0                    [OK]
    pivotaldata/centos7-build          CentosOS 7 image for GPDB compilation           0
    pivotaldata/centos7-test           CentosOS 7 image for GPDB testing               0

    字段的意義以下

    1. NAME 表示鏡像倉庫的名稱
      1. 不帶 / 表示 Docker 官方發佈的倉庫
      2. 其餘倉庫表示我的倉庫
    2. DESCRIPTION 表示鏡像倉庫描述
    3. STARS 表示鏡像的收藏數,該數字體現該倉庫的受歡迎程度
    4. OFFICAL 是否爲官方倉庫,官方倉庫具備更高的安全性
    5. AUTOMATED 是否自動構建鏡像倉庫,用戶能夠將本身的 Docker Hub 綁定到 GitHub 或者 BitBucket 上,當代碼提交後,能夠自動構建鏡像倉庫
  4. 導出和導入鏡像

    [root@dev docker]# docker save centos > centos.tar
    [root@dev docker]# docker load < centos.tar

當獲取鏡像後,就能基於鏡像啓動相應的容器。

容器的經常使用操做

  1. 建立並啓動容器

    [root@dev docker]# docker run -i -t centos /bin/bash
    • -i 選項: 表示啓動容器後,打開標準輸入設備 (STDIN) ,可以使用鍵盤進行輸入
    • -t 選項: 表示啓動容器後,分配一個僞終端,與服務器獎勵一個會話
    • centos 參數: 表示須要運行的鏡像名稱,標準格式爲 centos:latest ,若爲 latest 版本,能夠省略
    • /bin/bash 參數: 表示運行容器中的 bash 應用程序

    執行該命令後,會首先從本地拉取 centos 鏡像,若是本地沒有此鏡像,就會從 docker hub 上拉取並存放在本地,隨後就能根據鏡像建立並啓動 centos 容器。

    此時能夠參考容器的命令提示符:

    [root@5b51855797e3 /]#

    其中

    • root 表示當前登陸的用戶名,默認都是以超級管理員身份登陸的
    • 5b51855797e3 表示容器的標識符,通常稱爲 「容器 ID"
    • / 表示當前路徑

    可在 # 符號後輸入 Linux 命令,執行 exit 命令退出容器

  2. 列出容器

    [root@dev ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    5b51855797e3        centos              "/bin/bash"         17 minutes ago      Up 17 minutes                           sharp_mccarthy

    結果字段的具體意義以下

    1. CONTAINER ID 表示容器 ID
    2. IMAGE 鏡像名稱
    3. COMMAND 啓動容器時運行的命令,Docker 要求在啓動容器時須要運行一個命令
    4. CREATED 容器建立時間
    5. STAUS 表示容器運行的狀態
      1. Up 表示運行中
      2. Existed 表示已退出
    6. PORTS 表示容器須要對外暴露的端口號
    7. NAMES 容器的名稱

    docker ps 命令包括一些經常使用選項,描述以下

    • -a 列出全部的容器,包含全部的狀態
    • -l 表示列出最近建立的容器,包括全部的狀態
    • -n 表示列出 n 個 最近建立的容器,包括全部的狀態
    • -q 表示僅僅列出 CONTAINER ID 字段
    • -s 表示在輸出表格中增長一個 SIZE 字段
  3. 進入容器

    [root@dev ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    c6e7132314fd        centos              "/bin/bash"         2 minutes ago       Up 2 minutes                            happy_colden
    [root@dev ~]# docker attach c6e7132314fd
    [root@c6e7132314fd /]#

    只能進入運行中的數據,不能進入已中止的數據。

  4. 執行命令

    使用如下命令像運行中的容器執行具體的命令

    [root@dev ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    e5fa12acb939        centos              "/bin/bash"         20 seconds ago      Up 19 seconds                           pensive_fermat
    [root@dev ~]# docker exec -i -t e5fa12acb939 ls -l
    total 56
    -rw-r--r--   1 root root 12076 Dec  5 01:37 anaconda-post.log
    lrwxrwxrwx   1 root root     7 Dec  5 01:36 bin -> usr/bin
    drwxr-xr-x   5 root root   380 Dec 26 09:52 dev
    drwxr-xr-x  47 root root  4096 Dec 26 09:52 etc
    drwxr-xr-x   2 root root  4096 Apr 11  2018 home
    lrwxrwxrwx   1 root root     7 Dec  5 01:36 lib -> usr/lib
    lrwxrwxrwx   1 root root     9 Dec  5 01:36 lib64 -> usr/lib64
    drwxr-xr-x   2 root root  4096 Apr 11  2018 media
    drwxr-xr-x   2 root root  4096 Apr 11  2018 mnt
    drwxr-xr-x   2 root root  4096 Apr 11  2018 opt
    dr-xr-xr-x 192 root root     0 Dec 26 09:52 proc
    dr-xr-x---   2 root root  4096 Dec  5 01:37 root
    drwxr-xr-x  11 root root  4096 Dec  5 01:37 run
    lrwxrwxrwx   1 root root     8 Dec  5 01:36 sbin -> usr/sbin
    drwxr-xr-x   2 root root  4096 Apr 11  2018 srv
    drwxr-xr-x  13 root root     0 Dec 26 09:45 sys
    drwxrwxrwt   7 root root  4096 Dec  5 01:37 tmp
    drwxr-xr-x  13 root root  4096 Dec  5 01:36 usr
    drwxr-xr-x  18 root root  4096 Dec  5 01:36 var
  5. 中止容器

    使用下面命令中止運行中的容器(須要指定 ID 或者容器名稱):

    docker stop e5fa12acb939

    該命令會想容器發送 SIGTERM 信號,將等待很短的時間,再對容器發送 SIGKILL 信號,會當即終止容器。

  6. 終止容器

    docker kill e5fa12acb939
  7. 啓動容器

    能夠啓動已經中止的容器

    docker start e5fa12acb939
  8. 重啓容器

    docker restart e5fa12acb939
  9. 刪除容器

    docker rm e5fa12acb939

    不能刪除正在運行的容器,只能將它中止後,再刪除。

  10. 導入和導出容器

    docker export e5fa12acb939 > centos.tar
    docker import foo.tar reycg/centos:latest

Docker 命令彙總

docker help

手工製做 java 鏡像

總體步驟

  1. 容器啓動前, 準備一個 JDK 壓縮包,並存放在宿主機的 ~/software 目錄下
  2. 容器啓動時,經過數據卷的方式,將宿主機的 ~/software 目錄掛載到容器的 /mnt/software 目錄
  3. 容器啓動後,先解壓 JDK 壓縮包,隨後建立 JDK 符號連接
  4. 使用 docker commit 命令,提交當前容器爲 reycg/java 的鏡像
  5. 運行 reycg/java 鏡像,啓動一個 java 容器,並輸出 java 版本號,從而驗證鏡像是否可用,最後自動刪除當前容器

具體命令以下,前 3 個步驟

[root@dev software]# ls
jdk-8u121-linux-x64.tar.gz
[root@architecture01.general.dev.tj1 software]# docker run -i -t -v ~/software/:/mnt/software centos /bin/bash
[root@b3d2064d1a3d /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@b3d2064d1a3d /]# ll /mnt/software/
total 178956
-rw-r--r-- 1 root root 183246769 Dec 26 12:41 jdk-8u121-linux-x64.tar.gz
[root@b3d2064d1a3d /]# tar -zxf /mnt/software/jdk-8u121-linux-x64.tar.gz -C /opt/
[root@b3d2064d1a3d /]# ll /opt/
total 4
drwxr-xr-x 8 10 143 4096 Dec 13  2016 jdk1.8.0_121
[root@b3d2064d1a3d /]# ln -s /opt/jdk1.8.0_121 /opt/jdk
[root@b3d2064d1a3d /]# ll /opt/jdk
lrwxrwxrwx 1 root root 17 Dec 26 12:44 /opt/jdk -> /opt/jdk1.8.0_121
[root@b3d2064d1a3d /]# /opt/jdk/bin/java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

步驟 4, 5

[root@dev software]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
reycg/java          latest              d3c1df69ffb2        13 seconds ago      571.9 MB
centos              latest              ab9a80ab07d0        2 weeks ago         201.8 MB
[root@dev software]# docker run --rm reycg/java /opt/jdk/bin/java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

上面過程是手工完成的,除了這種方式,咱們還能夠寫一段腳本,讓其自動運行一樣能夠生成鏡像,這就是下面講的 Dockerfile。

使用 Dockerfile 製做鏡像

Dockerfile 腳本文件,包括一些指令,經過學習這些指令,能夠快速的編寫鏡像的構建腳本,從而讓構建鏡像作到自動化。下面先了解下 Docker file 的基本結構。

Dockerfile 的基本結構

  1. 設置基礎鏡像

    FROM centos:latest

    FROM 指令的值有固定的格式,即「倉庫名:標籤名」,若使用基礎鏡像的最新版本,則 latest 簽名能夠省略,不然須要指定基礎鏡像的具體版本。

  2. 設置維護者信息

    MAINTAINER "reycg"<reycg2017@163.com>

    MAINTAINER 指令沒有固定格式,建議使用姓名與郵箱的格式,能夠同時指定多我的

  3. 設置須要添加到容器中的文件

    ADD jdk-8u121-linux-x64.tar.gz /opt

    ADD 指令的第一個參數是宿主機的來源路徑(可以使用相對路徑),第二個參數是容器的目標路徑(必須爲絕對路徑)。

    ADD 指令還能夠自動解壓來源路徑中的壓縮包,將解壓後的文件複製到目標路徑中。

    除了 ADD 指令,還有一個相似的 COPY 指令,只是它只能完成簡單的複製,而沒有自動解壓的功能。

  4. 設置鏡像製做過程當中須要執行的命令

    RUN ln -s /opt/jdk1.8.0_121 /opt/jdk

    使用 RUN 指令能夠執行一系列構建鏡像所需的命令,若是要執行多條命令,可使用多行 RUN 命令,但最好是經過 \ 換行符合併成一條,這樣可以減少所構建的鏡像的體積。

  5. 設置容器啓動時須要執行的命令

    CMD /opt/jdk/bin/java -version

    若是在使用 docker run 命令時指定了須要執行的命令,會覆蓋 Dockerfile CMD 指令。

    在 Dockerfile 還有一個相似的 ENTRYPOINT 指令,只是後者所執行的指令不能被 docker run 覆蓋。

瞭解了 Dockerfile 的基本結果後,後面咱們使用 Dockerfile 構建一個 java 鏡像。

使用 Dockerfile 構建鏡像

將上一節的 Dockerfile 指令整理一下,獲得彙總的文件內容:

FROM centos:latest
MAINTAINER "reycg"<reycg2017@163.com>
ADD jdk-8u121-linux-x64.tar.gz /opt
RUN ln -s /opt/jdk1.8.0_121 /opt/jdk
CMD /opt/jdk/bin/java -version

下面就使用 docker build 命令讀取 Dockerfile 文件,並構建一個鏡像:

[root@dev software]# docker build -t reycg/java .
Sending build context to Docker daemon 183.2 MB
Sending build context to Docker daemon 
Step 0 : FROM centos:latest
 ---> ab9a80ab07d0
Step 1 : MAINTAINER "reycg"<reycg2017@163.com>
 ---> Running in ae37609d29d2
 ---> 51911673bc4a
Removing intermediate container ae37609d29d2
Step 2 : ADD jdk-8u121-linux-x64.tar.gz /opt
 ---> e4743bdb5bcd
Removing intermediate container 4ef5335f53e0
Step 3 : RUN ln -s /opt/jdk1.8.0_121 /opt/jdk
 ---> Running in 513ba2d0d2ff
 ---> 097586ce97cd
Removing intermediate container 513ba2d0d2ff
Step 4 : CMD /opt/jdk/bin/java -version
 ---> Running in cde9191ea078
 ---> cd4c35cfb8ac
Removing intermediate container cde9191ea078
Successfully built cd4c35cfb8ac

當執行成功後,將輸出最終的鏡像 ID (d3c1df69ffb2 ),此時可經過 docker images 查看最終生成的鏡像

[root@dev software]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
reycg/java          latest              cd4c35cfb8ac        27 minutes ago      571.9 MB
<none>              <none>              d3c1df69ffb2        56 minutes ago      571.9 MB
centos              latest              ab9a80ab07d0        2 weeks ago         201.8 MB

此時可以使用 docker tag 命令來修改鏡像的倉庫名和標籤名。

docker tag d3c1df69ffb2 reycg/java:1.0

此時再查看當前的鏡像

[root@dev software]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
reycg/java          latest              cd4c35cfb8ac        33 minutes ago      571.9 MB
reycg/java          1.0                 d3c1df69ffb2        About an hour ago   571.9 MB

安裝 jdk 後都須要設置一個 JAVA_HOME 和 PATH 環境變量,這樣就能夠在命令行中直接使用 Java 命令了。可使用 ENV 指令來完成。

ENV JAVA_HOME /opt/jdk
ENV PATH $JAVA_HOME/bin:$PATH

這樣完整的 Dockerfile 指令以下

FROM centos:latest
MAINTAINER "reycg"<reycg2017@163.com>
ADD jdk-8u121-linux-x64.tar.gz /opt
RUN ln -s /opt/jdk1.8.0_121 /opt/jdk
ENV JAVA_HOME /opt/jdk
ENV PATH $JAVA_HOME/bin:$PATH
CMD java -version

與 Spring Boot 整合

在微服務架構中,交付方式由應用程序轉變爲 Docker 鏡像,將服務及其運行環境封裝在 Docker 鏡像中。若須要發佈服務時,只須要根據鏡像啓動相應的容器便可。

搭建 Spring Boot 應用程序框架

標準的 Spring Boot 應用程序的 Maven 配置以下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>demo.msa</groupId>
  <artifactId>mesa-hello</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>mesa-hello</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>1.3.3.RELEASE</version>
  </parent>

  <dependencies>
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
  <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
  </build>
</project>

因爲使用了 spring-boot-maven-plugin 插件,在 mvn package 打包後將生成一個直接運行的 jar 包,生成的 jar 包默認文件名格式爲 ${project.build.finalName} ,它是一個 maven 屬性,至關於 ${project.artifactId}:${project.version}.

添加 Dockerfile

咱們的應用是基於 Maven 構建的,Maven 規範要求咱們將全部的資源放在 src/main/resources 資源目錄下。 Dockerfile 也是資源文件,所以也須要放在該目錄下。完整的文件內容以下:

FROM java
MAINTAINER "ReyCG"<reycg2017@163.com>
ADD mesa-hello-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
CMD java -jar app.jar

默認狀況下, Spring Boot 開啓的是 8080 端口,所以使用 ExPOSE 指令暴露出來。

最後使用 java -jar app.jar 執行 jar 包。

使用 Maven 構建 Docker 鏡像

Dockerfile 建立成功了,下一步就是讀取 Dockerfile,並構建 Docker 鏡像。而這些則是由 spotfy 公司的 docker-maven-plugin 插件來完成的。具體 maven 配置以下:

<plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.10</version>
            <configuration>
                <imageName>${project.groupId}/${project.artifactId}:${project.version}</imageName>
                <dockerDirectory>${project.build.outputDirectory}</dockerDirectory>
                <resources>
                    <resource>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>

下面來解釋下 configuration 片斷

  • imageName Docker 鏡像名稱,它由 ${project.groupId} 倉庫名,${project.artifactId} 鏡像名和 ${project.version} 標籤名組成
  • dockerDirectory 指定 Dockerfile 文件所在的目錄
  • resources/resource/directory 指定須要複製的根目錄,其中 ${project.build.directory} 則表示 target 目錄
  • resources/resource/directory 指定須要複製的文件

執行 mvn docker:build 便可編譯鏡像。編譯成功後,查看一下

[tomcat@ root]$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
demo.msa/mesa-hello   0.0.1-SNAPSHOT      67b94db5ac60        About an hour ago   657 MB

啓動 Spring Boot 的 Docker 容器

在後臺運行容器,並將容器的 8080 端口綁定到宿主機 58080 端口上。

docker run -d -p 58080:8080 demo.msa/mesa-hello:0.0.1-SNAPSHOT

經過瀏覽器訪問 localhost:8080 請求來驗證下。

調整 Docker 內存限制

可使用以下 Docker 命令監控 Docker 容器的運行狀況

[tomcat@ root]$ docker ps
CONTAINER ID        IMAGE                                COMMAND                CREATED             STATUS              PORTS                     NAMES
eb8659f31ca3        demo.msa/mesa-hello:0.0.1-SNAPSHOT   "/bin/sh -c 'java -j   37 minutes ago      Up 37 minutes       0.0.0.0:58080->8080/tcp   sharp_hodgkin       
[tomcat@ root]$ docker stats eb8659f31ca3
CONTAINER           CPU %               MEM USAGE/LIMIT     MEM %               NET I/O
eb8659f31ca3        0.10%               540.2 MB/8.128 GB   6.65%               5.024 kB/7.208 kB

由此命令能夠看出容器的 CPU 使用率,內存使用狀況與使用率,網絡 IO 使用狀況等信息。

從內存使用狀況來看,啓動容器後默認分配了 8.128 GB 的內存,其中已經使用了 540.2 MB。由此咱們能夠估算出容器應用程序的最大內存,對啓動容器所需分配的內存作出限制,能夠節省更多的宿主機內容。從而能夠啓動更多的容器。

docker run 命令中添加 -m 參數就能夠調整容器的內存限制。

[tomcat@ root]$ docker run -d -m 800m -p 58080:8081 demo.msa/mesa-hello:0.0.1-SNAPSHOT 
40c7c49d0002c08c72034d97bb39d0b415df7a7eef0bfa959853649c88c8e77c
[tomcat@ root]$ docker ps 
CONTAINER ID        IMAGE                                COMMAND                CREATED             STATUS              PORTS                     NAMES
40c7c49d0002        demo.msa/mesa-hello:0.0.1-SNAPSHOT   "/bin/sh -c 'java -j   4 seconds ago       Up 3 seconds        0.0.0.0:58080->8081/tcp   dreamy_mcclintock   
[tomcat@root]$ docker stats 40c7c49d0002
CONTAINER           CPU %               MEM USAGE/LIMIT     MEM %               NET I/O
40c7c49d0002        105.87%             531.8 MB/838.9 MB   63.39%              468 B/558 B

問題記錄

  1. centos 6 如何安裝 docker

    https://www.liquidweb.com/kb/how-to-install-docker-on-centos-6/

  2. docker 不能鏈接問題

    Get http:///var/run/docker.sock/v1.19/images/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

    解決方案 http://www.cnblogs.com/ashinliu/p/5477259.html

    http://tinylab.org/use-docker-without-sudo/

參考

  1. 《架構探險—輕量級微服務架構》
  2. https://www.liquidweb.com/kb/how-to-install-docker-on-centos-6/
  3. http://www.cnblogs.com/ashinliu/p/5477259.html
相關文章
相關標籤/搜索