青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

zhiye_wang

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

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  31 隨筆 :: 1 文章 :: 2 評論 :: 0 Trackbacks

第三章 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:43 zhiye_wang 閱讀(730) 評論(0)  編輯 收藏 引用 所屬分類: docker
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美日本在线| 激情成人综合| 亚洲线精品一区二区三区八戒| 久久久91精品国产一区二区三区| 亚洲午夜精品国产| 亚洲午夜日本在线观看| 日韩香蕉视频| 最新日韩中文字幕| 日韩视频精品在线观看| 亚洲破处大片| 樱花yy私人影院亚洲| 免费观看成人| 久久久精品性| 免费短视频成人日韩| 欧美激情国产精品| 国产精品久久777777毛茸茸| 国产日韩一区二区三区| 精品成人一区二区| 一区二区三区高清在线 | 欧美xxxx在线观看| 欧美黑人多人双交| 99亚洲一区二区| 亚洲欧美日韩国产综合| 久久久成人网| 欧美午夜美女看片| 精品999在线观看| 中文在线不卡| 免费观看30秒视频久久| 宅男噜噜噜66国产日韩在线观看| 久久精品国产亚洲aⅴ| 欧美日韩免费高清| 在线观看三级视频欧美| 亚洲午夜久久久久久久久电影网| 久久综合福利| 亚洲图片欧洲图片av| 美女精品视频一区| 国产午夜精品美女视频明星a级| 亚洲精品国精品久久99热| 欧美一区二区三区的| 91久久在线视频| 久久嫩草精品久久久精品一| 国产精品久久久久久久久借妻| 91久久嫩草影院一区二区| 久久久久久久综合| 亚洲深夜影院| 欧美日韩另类国产亚洲欧美一级| 在线精品视频在线观看高清| 久久aⅴ乱码一区二区三区| 99re6热在线精品视频播放速度| 久久久噜噜噜久久久| 国产美女高潮久久白浆| 亚洲伦伦在线| 亚洲福利视频一区| 久久综合久久久久88| 麻豆精品精品国产自在97香蕉| 亚洲精品一线二线三线无人区| 久久成人国产| 国产精品美女一区二区在线观看 | 久久精品国产清高在天天线| 国产精品v日韩精品v欧美精品网站| 亚洲国产日本| 麻豆国产精品va在线观看不卡| 亚洲欧美另类综合偷拍| 国产精品日韩精品| 亚洲欧美怡红院| 亚洲在线第一页| 国产精品日韩欧美一区| 性欧美精品高清| 欧美一级黄色网| 欧美夫妇交换俱乐部在线观看| 在线精品福利| 91久久精品www人人做人人爽| 欧美jizzhd精品欧美巨大免费| 最新日韩av| 亚洲精品一区在线观看| 国产精品av一区二区| 欧美亚洲在线观看| 欧美在线免费视频| 1769国产精品| 亚洲日韩中文字幕在线播放| 欧美日韩成人激情| 亚洲欧美中文日韩v在线观看| 午夜精品成人在线视频| 狠狠88综合久久久久综合网| 欧美激情视频给我| 欧美日韩免费观看一区二区三区| 亚洲综合欧美日韩| 久久国产手机看片| 日韩视频免费观看高清在线视频| 一区二区三区视频在线看| 国产精品视频免费观看| 久久久欧美精品sm网站| 欧美成人一区二区在线| 亚洲免费婷婷| 久久欧美肥婆一二区| 一个色综合导航| 午夜久久资源| 亚洲伦伦在线| 亚洲欧美另类久久久精品2019| 影音欧美亚洲| 中文亚洲视频在线| 亚洲成人自拍视频| 999亚洲国产精| 欧美精品18+| 久久嫩草精品久久久精品| 免费成人av资源网| 亚欧成人在线| 欧美另类在线观看| 久久亚洲免费| 欧美性猛交xxxx乱大交蜜桃| 猛男gaygay欧美视频| 国产精品成人在线观看| 嫩草国产精品入口| 国产日韩精品一区二区浪潮av| 亚洲桃色在线一区| 欧美在线播放| 亚洲欧美日韩电影| 牛人盗摄一区二区三区视频| 香蕉免费一区二区三区在线观看| 麻豆乱码国产一区二区三区| 欧美一区二视频| 欧美日韩国产专区| 蜜桃av噜噜一区| 国产午夜精品一区理论片飘花| 亚洲精品之草原avav久久| 一区二区在线观看视频在线观看| 宅男噜噜噜66一区二区66| 亚洲国产成人一区| 欧美怡红院视频| 午夜精品区一区二区三| 欧美日韩国产首页在线观看| 免费在线国产精品| 亚洲国产高清aⅴ视频| 日韩一级精品视频在线观看| 亚洲国产精品尤物yw在线观看| 欧美在线播放视频| 久久精品视频在线看| 国产欧美一区二区三区沐欲| 亚洲欧美成人综合| 午夜一区不卡| 国产精品系列在线播放| 亚洲视频一二| 久久不射2019中文字幕| 国产精品综合| 欧美一区二区三区免费在线看 | 久久国产精品一区二区三区四区| 国产精品s色| 亚洲欧美日韩国产中文| 久久国产视频网站| 国产一区二区在线观看免费| 久久精品免费电影| 欧美激情精品久久久久久变态| 亚洲日本免费电影| 欧美人与性禽动交情品| 亚洲手机在线| 久久嫩草精品久久久久| 亚洲高清三级视频| 欧美精品www在线观看| 99伊人成综合| 久久精品国产精品亚洲精品| 伊人成人在线| 欧美激情综合亚洲一二区| 亚洲免费av观看| 亚洲一区二区三区精品动漫| 欧美激情bt| 亚洲视频999| 久久精品免费电影| 亚洲精品乱码久久久久久蜜桃麻豆 | 一区二区三区在线免费播放| 欧美一区二区播放| 久久久久网址| 亚洲国产精品久久久久婷婷老年 | 狠狠爱成人网| 久久精品女人的天堂av| 欧美成ee人免费视频| 国产日产亚洲精品系列| 香蕉久久国产| 欧美一区二区在线免费播放| 国产日韩欧美a| 久久久综合精品| 亚洲成人资源网| 亚洲欧美视频在线| 韩国一区二区三区美女美女秀| 久久久久久婷| 亚洲三级国产| 久久夜色精品亚洲噜噜国产mv| 亚洲大片av| 欧美日韩视频在线第一区| 亚洲视频香蕉人妖| 最新日韩中文字幕| 欧美在线综合视频| 91久久精品一区| 国产精品一区久久| 欧美精品久久久久久久免费观看| 亚洲视频在线一区观看| 久久一区二区三区超碰国产精品| 日韩视频在线观看国产| 在线播放精品| 国产精品成人播放| 老司机一区二区|