<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      zhiye_wang

      向星空仰望的越深,越發現自己的渺小

      博客園 首頁 新隨筆 聯系 訂閱 管理

      第三章 docker 入門

      3.1 確保docker已經就緒

      首先查看docker程序是否存在,功能是否正常

      [#3#cloudsoar@cloudsoar-virtual-machine ~]$sudo docker info

      [sudo] password for cloudsoar:

      Containers: 11

      Images: 16

      Server Version: 1.9.1

      Storage Driver: aufs

       Root Dir: /var/lib/docker/aufs

       Backing Filesystem: extfs

       Dirs: 38

       

      3.2 運行我們的第一個容器

      docker run 命令提供了Docker容器的創建到啟動的功能

      書上使用此命令創建第一個容器

      [#4#cloudsoar@cloudsoar-virtual-machine ~]$sudo docker run -i -t ubuntu /bin/bash 

       Unable to find image 'ubuntu:latest' locally

      latest: Pulling from library/ubuntu

      073de23ee32b: Downloading 48.09 MB/65.69 MB

      ...

      可以看到有大概66MB,等待慢慢下載完成。其實Ubuntu鏡像也是一個基礎鏡像。

      sudo docker run -i -t ubuntu /bin/bash 

      這句命令我的理解就是,sudo 臨時切換管理員權限,使用 docker run 命令,啟動鏡像

      ubuntu 中的 bash。docker run 會檢查本地是否有ubuntu這個基礎鏡像,如果沒有,

      則去docker hub registry 去檢測并下載此鏡像,下載完畢再執行。

      由于容器有自己的ip,自己的shell,是獨立的。因此加上 -i 參數來打開容器的標準輸入

      STDIN,使用 -t 給容器配一個交互式終端。當新容器下載完畢后,會自動以root用戶登

      錄到新的容器中。界面顯示的是:root@容器ID 。容器的主機名就是容器的ID。

      假設說我們想要給這個容器安裝一個curl,或者是 ping,可以通過如下命令

      sudo docker run ubuntu apt-get install -y curl

      docker run 容器名 命令 

      等了半個小時,還沒下載完畢,由于這個基礎鏡像下載實在太慢,我換了一個鏡像

      我之前pull了一個名為paulcos11/docker-tutorial的鏡像,容器有11個

      如果你想下載其他的鏡像,可以使用 docker search tutorial 首先查看可用鏡像。然后使用

      docker pull 把它拉下來。

       

      root@cloudsoar-virtual-machine:/home/cloudsoar# docker search tutorial

      NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

      georgeyord/reactjs-tutorial          This is the backend of the React comment b...   2                    [OK]

      mhausenblas/kairosdb-tutorial        GitHub fetcher for KairosDB tutorial            1                    [OK]

      odk211/spree-tutorial                                                                1                    [OK]

      paulcos11/docker-tutorial            docker tutorial       

       

      root@cloudsoar-virtual-machine:/home/cloudsoar# docker pull paulcos11/docker-tutorial

      Using default tag: latest

      latest: Pulling from paulcos11/docker-tutorial

      044ffdf80f70: Pull complete 

      ...

      Digest: sha256:8effcf1f4eac7096ba4eaf4a90261580657605d159946372c12ae28b7e5e74f1

      Status: Downloaded newer image for paulcos11/docker-tutorial:latest

      到這里,我成功下載了容器鏡像paulcos11/docker-tutorial

      繼續流程,進入我們的容器

      root@cloudsoar-virtual-machine:~# docker run -i -t paulcos11/docker-tutorial /bin/bash

      root@537739299f24:/# 

      執行完畢可以看到進入了容器的bash,用戶是root,容器ID是537739299f24,

       

      3.3 使用容器

      可以使用 hostname 查看容器的主機名

      root@537739299f24:/# hostname

      537739299f24

      可以看到容器的ID就是容器的主機名。
      下一步看看 /etc/hosts 文件

      root@537739299f24:/# cat /etc/hosts

      172.17.0.2 537739299f24

      127.0.0.1 localhost

      ::1 localhost ip6-localhost ip6-loopback

      fe00::0 ip6-localnet

      ff00::0 ip6-mcastprefix

      ff02::1 ip6-allnodes

      ff02::2 ip6-allrouters

      可以看到docker 已經在host文件中為該容器的ijp增加了一條主機配置項

      再看看IP

      root@537739299f24:/# ip a

      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 

          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

          inet 127.0.0.1/8 scope host lo

             valid_lft forever preferred_lft forever

          inet6 ::1/128 scope host 

             valid_lft forever preferred_lft forever

      30: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 

          link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

          inet 172.17.0.2/16 scope global eth0

             valid_lft forever preferred_lft forever

          inet6 fe80::42:acff:fe11:2/64 scope link 

             valid_lft forever preferred_lft forever

      可以看到這里有lo的回環接口。還有ip是172.17.0.2的標準eth0接口,和宿主機完全一樣。

      查看容器 中的進程

      root@537739299f24:/# ps -aux

      USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

      root          1  0.2  0.1  21944  3528 ?        Ss   03:03   0:01 /bin/bash

      root         12  0.0  0.0  19188  2336 ?        R+   03:14   0:00 ps -aux

      接下來,我想給容器安裝一個vim

      這里我先更新下容器的源再安裝。

      root@537739299f24:/# apt-get update && apt-get install vim

      安裝完畢使用 exit,即可退出到宿主機系統。這時容器也會停止,因為一旦退出容器,

      容器也隨之停止了運行。但是容器仍然存在,可以用 docker ps -a 查看容器列表。

      root@537739299f24:/# exit

      exit

      docker ps 可以查看運行中的容器,加上 -a 參數可以查看所有的容器

      3.4 容器命名

      可以使用如下命令為容器指定一個合法有意義的名字。

      root@cloudsoar-virtual-machine:~# docker run --name wzy_the_container -i -t paulcos11/docker-tutorial /bin/bash

      root@0a09dfd688ea:/# exit

      exit

       

      3.5 重新啟動已經停止的容器

      此時,wzy_the_container 已經停止了。可以使用如下命令重啟一個已經停止的容器。

      root@cloudsoar-virtual-machine:~# docker start wzy_the_container

      wzy_the_container

      也可以使用容器ID替換容器名。

       

      3.6 附著到容器上
      容器啟動的時候會按照docker run指定的參數來運行。因此這個容器啟動后會啟動一個交互

      的shell。我可以使用 docker attach 直接附著到此容器。

      root@cloudsoar-virtual-machine:~# docker attach wzy_the_container

      root@0a09dfd688ea:/# 

      可以看到重新會到了容器的Bash提示符界面。

      如果退出容器的shell,容器也會隨之停止運行。

       

      3.7 創建守護式容器

      除了交互式運行的容器,我們也可以創建守護容器。可以長期的運行應用程序或者服務。

      大多時候需要創建守護式容器。

      [#10#cloudsoar@cloudsoar-virtual-machine ~]$sudo docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

      cf5636f0499fa0105b845b5dfa61913ff7d5fccfb1b19c16b09ed2752233794d

      由于此時第 3.2 步我下載的 Ubuntu 基礎鏡像Downloading 48.09 MB/65.69 MB 剛好下載

      完畢,所以此時我開始使用ubuntu容器鏡像操作了。

      docker run 的參數 -d 是放到后臺執行。此時我們并沒有像上一個容器直接附著到新容器的

      shell會話上,而是返回了一個容器ID而已。此時使用 docker ps 可以看到正在運行的容器。

       

      ubuntu就是我剛剛下載完畢的基礎鏡像。 paulcos11/docker-tutorial 是我自己下載的其他的鏡像。

      3.8 容器內部再搞什么

      使用 docker logs 獲取容器日志

      [#16#cloudsoar@cloudsoar-virtual-machine ~]$sudo docker logs daemon_dave

      hello world

      hello world

      hello world

      hello world

      hello world

      hello world

      或者可以加上-f 實時監控容器日志。

      sudo docker logs -f daemon_dave

      也可以追蹤日志某一片段,只需要tail命令加入 -f --lines標志即可。

      例如: docker logs --tail 10 daemon_dave 獲取最后10行日志即可。

       docker logs --tail 0 -f daemon_dave 獲取最新日志。

      如果要查看日志的時間,可以加上時間戳。

      [#18#cloudsoar@cloudsoar-virtual-machine ~]$sudo docker logs -ft daemon_dave

      2016-03-15T03:45:28.457991514Z hello world

      2016-03-15T03:45:29.472422582Z hello world

      2016-03-15T03:45:30.475130491Z hello world

      3.9 查看容器進程

      查看容器內的進程可以使用 docker top 命令。

      [#20#cloudsoar@cloudsoar-virtual-machine ~]$sudo docker top daemon_dave

      UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD

      root                25381               22325               0                   11:45               ?                   00:00:00            /bin/sh -c while true; do echo hello world; sleep 1; done

       

      3.10 在容器內部運行進程

      我們可以使用docker exec 命令在容器內部額外啟動新進程,可以運行的進程有兩種類型,

      交互式任務和后臺任務。首先我們使用 touch 命令創建一個空文件。

      $sudo docker exec -d daemon_dave touch /etc/new_config_file

      -d 表示是后臺進程。

      或者打開一個shell

      $sudo docker exec -t -i daemon_dave /bin/bash

      root@cf5636f0499f:/# 

      3.11 停止守護式容器

      $sudo docker stop daemon_dave

      daemon_dave

      3.12 自動重啟容器

      如果由于某種錯誤導致容器停止,可以通過 --restart 標志讓docker自動重新啟動容器。

      $sudo docker run --restart=on-failure:5 --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

      Error response from daemon: Conflict. The name "daemon_dave" is already in use by container cf5636f0499f. You have to remove (or rename) that container to be able to reuse that name.

      這里我的運行不起來,因為 -- restart 標示是docker 2.0 引入的。我的是docker 1.9版本。

       

      3.13 深入容器

      除了使用docker ps 查看容器信息,還可以使用 docker inspect 查看更多信息

      $sudo docker inspect daemon_dave

      [sudo] password for cloudsoar:

      [

      {

          "Id": "cf5636f0499fa0105b845b5dfa61913ff7d5fccfb1b19c16b09ed2752233794d",

          "Created": "2016-03-15T03:45:28.124542139Z",

          "Path": "/bin/sh",

          "Args": [

              "-c",

              "while true; do echo hello world; sleep 1; done"

          ],

          "State": {

              "Status": "exited",

              "Running": false,

              "Paused": false,

              "Restarting": false,

              "OOMKilled": false,

              "Dead": false,

              "Pid": 0,

              "ExitCode": 137,

              "Error": "",

              "StartedAt": "2016-03-15T03:45:28.455126857Z",

              "FinishedAt": "2016-03-15T04:05:11.945521026Z"

          },

         ...

      也可使用 -f 或者 --format 標志來選定查看結果。

       

      $sudo docker inspect --format='{{ .State.Running}}' daemon_dave

      false

      以及查看其他信息

      $sudo docker start daemon_dave

      daemon_dave

      $sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' daemon_dave

      172.17.0.3

       

      3.14 刪除容器

      如果容器不在使用,可以使用 docker rm 命令刪除。

      這里假設我要刪除 daemon_dave 這個容器,他的容器ID是 cf5636f0499f

      $sudo docker rm cf5636f0499f

      Error response from daemon: Conflict, You cannot remove a running container. Stop the container before attempting removal or use -f

      Error: failed to remove containers: [cf5636f0499f]

      $sudo docker stop cf5636f0499f

      cf5636f0499f

      $sudo docker rm cf5636f0499f

      cf5636f0499f

      由于不能刪除正在運行的容器,所以需要先停止。

      3.15 小結

      下一章學習如何構建自己的Docker鏡像,以及如何使用Docker 倉庫和 Docker Registry.

      posted on 2016-03-15 13:35  zhiye_wang  閱讀(175)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 99在线精品国自产拍中文字幕| 内江市| 波多野结衣网站| 精品国产成人a在线观看| 人人玩人人添人人澡超碰| 亚洲精品一区二区三区综合| 麻花传剧mv在线看免费| 婷婷五月综合激情| 里番全彩爆乳女教师| 日本亚洲一区二区精品久久| 亚洲综合天堂一区二区三区| 国产精品亚洲二区在线看| 内射干少妇亚洲69XXX| 国产成人人综合亚洲欧美丁香花| 国内精品久久人妻互换| 国产精品午夜福利视频| 国产精品中文字幕免费| 日本无翼乌邪恶大全彩h| 2022最新国产在线不卡a| 九九热精品视频免费在线| 亚洲av肉欲一区二区| A毛片终身免费观看网站| 中文字幕在线亚洲日韩6页| 亚洲国产高清在线观看视频| 亚洲色欲色欱WWW在线| 亚洲国产激情一区二区三区| 中文字幕av一区二区| 午夜精品福利亚洲国产| 亚洲中文字幕av无码区| 国产成人高清精品免费软件 | 免费看无码自慰一区二区| 望都县| 国产一区二区三区内射高清| 国产蜜臀在线一区二区三区| 国产精品午夜无码AV天美传媒| 黄色三级亚洲男人的天堂| 乱色老熟妇一区二区三区| 安西县| 午夜免费无码福利视频麻豆| 亚洲第一区二区快射影院| 欧美 喷水 xxxx|