Docker初次見面

Docker基礎

hello world

    docker run ubuntu:15.10 /bin/echo "Hello world"
    Hello world

各個參數解析:

  • docker: Docker 的二進制執行文件。
  • run:與前面的 docker 組合來運行一個容器。
  • ubuntu:15.10指定要運行的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
  • /bin/echo "Hello world": 在啓動的容器裏執行的命令

運行交互式的容器

    docker run -i -t ubuntu:15.10 /bin/bash
    root@dc0050c79503:/#

各個參數解析:

  • -t:在新容器內指定一個僞終端或終端。
  • -i:允許你對容器內的標準輸入 (STDIN) 進行交互

啓動容器(後臺運行)

    docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

在輸出中,我們沒有看到期望的"hello world",而是一串長字符

2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

這個長字符串叫做容器ID,對每個容器來說都是唯一的,我們可以通過容器ID來查看對應的容器發生了什麼。

首先,我們需要確認容器有在運行,可以通過 docker ps 來查看

    docker ps

返回結果:

  • CONTAINER ID:容器ID
  • NAMES:自動分配的容器名稱

在容器內使用docker logs命令,查看容器內的標準輸出

     docker logs 2b1b7a428627 或者docker logs {names}


停止容器

     docker stop  id 或者 docker stop {names}
## 運行一個web
    docker pull traning/webapp #載入鏡像
    docker run -d -P training/webapp python app.py

參數說明:

  • -d:讓容器在後臺運行。
  • -P:將容器內部使用的網絡端口映射到我們使用的主機上。

網絡端口的快捷方式

    docker port id

查看端口映射(從哪個端口映射到宿主機的那個端口)

查看 WEB 應用程序日誌

    docker  logs  -f idor名字

查看容器內容的標準輸出,-f: 讓 docker logs 像使用 tail -f 一樣來輸出容器內部的標準輸出。

查看WEB應用程序容器的進程

    docker top idor名字

查看web應用城西容器的進程

檢查 WEB 應用程序

    docker inspect id or 名字

查看 Docker 的底層信息。它會返回一個 JSON 文件記錄着 Docker 容器的配置和狀態信息。

停止和重啓 web容器

    docker stop id or 名字
    docker start id or 名字
## 查看最後一次創建的容器
    docker ps -l 

正在運行的容器,我們可以使用 docker restart 命令來重啓

移除WEB應用容器

    docker rm id or 名字

刪除容器容器必須是stop狀態

列出鏡像列表

    docker images   

返回結果說明:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    REPOSITORY:表示鏡像的倉庫源
    TAG:鏡像的標籤
    IMAGE ID:鏡像ID
    CREATED:鏡像創建時間
    SIZE:鏡像大小

如果你不指定一個鏡像的版本標籤,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像。

查找鏡像

我們可以從 Docker Hub 網站來搜索鏡像,Docker Hub 網址爲: https://hub.docker.com/我們也可以使用 docker search 命令來搜索鏡像。比如我們需要一個httpd的鏡像來作爲我們的web服務。我們可以通過 docker search 命令搜索 httpd 來尋找適合我們的鏡像。

    docker  search  httpd

    NAME:鏡像倉庫源的名稱
    DESCRIPTION:鏡像的描述
    OFFICIAL:是否docker官方發佈

創建鏡像

當我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。

1.從已經創建的容器中更新鏡像,並且提交這個鏡像2.使用 Dockerfile 指令來創建一個新的鏡像

更新鏡像

    docker run -t -i ubuntu:15.10 /bin/bash

在運行的容器內使用 apt-get update 命令進行更新。在完成操作之後,輸入 exit命令來退出這個容器。

此時ID爲e218edb10161的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit來提交容器副本。

    docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

各個參數說明:

-m:提交的描述信息

-a:指定鏡像作者

e218edb10161:容器ID

runoob/ubuntu:v2:指定要創建的目標鏡像名

構建鏡像

    docker build 

這需要一個dockerfile文件如下:

    cat Dockerfile 
    FROM    centos:6.7
    MAINTAINER      Fisher "[email protected]"
    RUN     /bin/echo 'root:123456' |chpasswd
    RUN     useradd runoob
    RUN     /bin/echo 'runoob:123456' |chpasswd
    RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
    EXPOSE  22
    EXPOSE  80
    CMD     /usr/sbin/sshd -D

一個指令都會在鏡像上創建一個新的層,每一個指令的前綴都必須是大寫的。

第一條FROM,指定使用哪個鏡像源

RUN 指令告訴docker 在鏡像內執行命令,安裝了什麼。。。

然後,我們使用 Dockerfile 文件,通過 docker build 命令來構建一個鏡像。

    docker build -t runoob/centos:6.7 .
    Sending build context to Docker daemon 17.92 kB
    Step 1 : FROM centos:6.7
    ---> d95b5ca17cc3
    Step 2 : MAINTAINER Fisher "[email protected]"
    ---> Using cache
    ---> 0c92299c6f03
    Step 3 : RUN /bin/echo 'root:123456' |chpasswd
    ---> Using cache
    ---> 0397ce2fbd0a
    Step 4 : RUN useradd runoob

參數說明:

-t :指定要創建的目標鏡像名

. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑

使用docker images 查看創建的鏡像已經在列表中存在,鏡像ID爲860c279d2fec

    runoob@runoob:~$ docker images 
    REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    runoob/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
    runoob/ubuntu       v2                  70bf1840fd7c        17 hours ago         158.5 MB
    ubuntu              14.04               90d5884b1ee0        6 days ago           188 MB
    php                 5.6                 f40e9e0f10c8        10 days ago          444.8 MB
    nginx               latest              6f8d099c3adc        12 days ago          182.7 MB
    mysql               5.6                 f2e8d6c772c0        3 weeks ago          324.6 MB
    httpd               latest              02ef73cf1bc0        3 weeks ago          194.4 MB
    ubuntu              15.10               4e3b13c8a266        5 weeks ago          136.3 MB
    hello-world         latest              690ed74de00f        6 months ago         960 B
    centos              6.7                 d95b5ca17cc3        6 months ago         190.6 MB
    training/webapp     latest              6fae60ef3446        12 months ago        348.8 MB

我們可以使用新的鏡像來創建容器

    runoob@runoob:~$ docker run -t -i runoob/centos:6.7  /bin/bash
    [root@41c28d18b5fb /]# id runoob
    uid=500(runoob) gid=500(runoob) groups=500(runoob)

從上面看到新鏡像已經包含我們創建的用戶runoob

設置鏡像標籤

    docker tag 860c279d2fec runoob/centos:dev   

docker tag 鏡像ID,這裏是 860c279d2fec ,用戶名稱、鏡像源名(repository name)和新的標籤名(tag)。

使用 docker images 命令可以看到,ID爲860c279d2fec的鏡像多一個標籤。

    runoob@runoob:~$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    runoob/centos       6.7                 860c279d2fec        5 hours ago         190.6 MB
    runoob/centos       dev                 860c279d2fec        5 hours ago         190.6 MB
    runoob/ubuntu       v2                  70bf1840fd7c        22 hours ago        158.5 MB
    ubuntu              14.04               90d5884b1ee0        6 days ago          188 MB
    php                 5.6                 f40e9e0f10c8        10 days ago         444.8 MB
    nginx               latest              6f8d099c3adc        13 days ago         182.7 MB
    mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
    httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
    ubuntu              15.10               4e3b13c8a266        5 weeks ago         136.3 MB
    hello-world         latest              690ed74de00f        6 months ago        960 B
    centos              6.7                 d95b5ca17cc3        6 months ago        190.6 MB
    training/webapp     latest              6fae60ef3446        12 months ago       348.8 MB

關注我,關注測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章