在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ 使用容器
docker用戶指南
鏡像
在Docker中運(yùn)行SSH進(jìn)程服務(wù)
Docker Hub
CentOS
Rackspace Cloud
Red Hat Enterprise Linux
在Docker中運(yùn)行Reids服務(wù)
FrugalWare
管理容器數(shù)據(jù)
Debian
Docker中運(yùn)行MongoDB
Gentoo
在Docker中使用Riak服務(wù)
IBM SoftLayer
在Docker中運(yùn)行Apt-Cacher-ng服務(wù)
開(kāi)始使用Docker Hub
Amazon EC2
在Docker中運(yùn)行"hello Word"應(yīng)用
Docker Hub上的倉(cāng)庫(kù)和鏡像
Ubuntu
Docker Hub賬戶
Docker中運(yùn)行Node.js web應(yīng)用
Docker中運(yùn)行CouchDB服務(wù)
Fedora
Binaries
CRUX Linux
使用Docker Hub
Mac OS X 安裝 Docker
在Docker中運(yùn)行PostgreSQL
創(chuàng)建一個(gè)基本鏡像
Docker Hub上的自動(dòng)化構(gòu)建
連接容器
Google Cloud Platform
使用docker第一步
使用docker鏡像
Arch Linux
openSUSE
使用容器
Microsoft Windows 安裝docker

使用容器

在上一節(jié)的用戶指南,我們開(kāi)始了我們的第一個(gè)容器。我們使用docker run命令啟用了兩個(gè)容器

  • 我們?cè)谇芭_(tái)進(jìn)行容器交互
  • 在后臺(tái)進(jìn)程運(yùn)行容器

在這個(gè)過(guò)程中我們了解了幾個(gè)docker命令:

  • docker ps 列出容器
  • docker logs顯示容器的標(biāo)準(zhǔn)輸出
  • docker stop停止正在運(yùn)行的容器

提示:我們有另外一種方法來(lái)學(xué)習(xí)docker命令,與用戶交互

docker客戶端非常簡(jiǎn)單。你可以使用docker的每一個(gè)標(biāo)示和參數(shù)組合來(lái)進(jìn)行你的操作。

    # Usage:  [sudo] docker [flags] [command] [arguments] ..
    # Example:
    $ docker run -i -t ubuntu /bin/bash

這時(shí)候我們使用docker version命令來(lái)返回安裝的docker客戶端和進(jìn)程信息。

這個(gè)命令不僅返回了您使用的docker客戶端版本信息,還返回了docker的編程語(yǔ)言GO的版本信息。

    Client version: 0.8.0
    Go version (client): go1.2

    Git commit (client): cc3a8c8
    Server version: 0.8.0

    Git commit (server): cc3a8c8
    Go version (server): go1.2

    Last stable version: 0.8.0

看看docker客戶端能做什么

我們可以通過(guò)只輸入docker沒(méi)有任何其它選項(xiàng)來(lái)查看docker客戶端所有的命令。

    $ sudo docker

您將看到所有當(dāng)前可用列表:

    Commands:
     attach    Attach to a running container
     build     Build an image from a Dockerfile
     commit    Create a new image from a container's changes
     . . .

docker命令使用

你可以更深入的去了解docker命令的使用。

試著輸入Docker [command],這里會(huì)看到docker命令的使用方法:

    $ sudo docker attach
    Help output . . .

或者你可以再docker命令中使用--help標(biāo)示

    $ sudo docker images --help

這將顯示所有的描述信息和可用的標(biāo)示:

    Usage: docker attach [OPTIONS] CONTAINER

    Attach to a running container

      --no-stdin=false: Do not attach stdin
      --sig-proxy=true: Proxify all received signal to the process (even in non-tty mode)

注意:你可以看到一個(gè)完整的docker命令列表。

在Docker中運(yùn)行一個(gè)web應(yīng)用

現(xiàn)在我們已經(jīng)學(xué)習(xí)了更多的docker命令,我們需要學(xué)習(xí)在容器中運(yùn)行更多重要的事情。到目前為止我們已經(jīng)運(yùn)行的容器沒(méi)有什么特別用處。讓我們通過(guò)在docker運(yùn)行一個(gè)web應(yīng)用程序?qū)嵗齺?lái)了解。

在我們的web應(yīng)用中,我們將運(yùn)行一個(gè)python應(yīng)用。讓我們先從docker run命令開(kāi)始。

    $ sudo docker run -d -P training/webapp python app.py

讓我們來(lái)回顧一下我們的命令。我們指定了-d-P兩個(gè)標(biāo)示。我們已經(jīng)知道的是-d標(biāo)示是讓docker容器在后臺(tái)運(yùn)行。新的-P標(biāo)示通知Docker所需的網(wǎng)絡(luò)端口映射從主機(jī)映射到我們的容器內(nèi)?,F(xiàn)在讓我們看看我們的web應(yīng)用程序。

我們指定了training/web鏡像。這個(gè)預(yù)先建立好的鏡像被我們創(chuàng)建后就已經(jīng)包含了簡(jiǎn)單的python應(yīng)用程序環(huán)境。

最好,我們指定一個(gè)容器來(lái)運(yùn)行:python

注意:你可以在命令參考Docker run參考看到更多docker run命令的細(xì)節(jié)

查看web應(yīng)用容器

現(xiàn)在我們使用docker ps查看我們正在運(yùn)行的容器。

    $ sudo docker ps -l
    CONTAINER ID  IMAGE                   COMMAND       CREATED        STATUS        PORTS                    NAMES
    bc533791f3f5  training/webapp:latest  python app.py 5 seconds ago  Up 2 seconds  0.0.0.0:49155->5000/tcp  nostalgic_morse

你可以看到我們?cè)?code>docker ps中已經(jīng)指定了新的標(biāo)示-l。這通知docker ps命令返回最后的容器的狀態(tài)。

注意:默認(rèn)情況下,docker ps命令只顯示運(yùn)行中的容器。如果你還想看已經(jīng)停止的容器,請(qǐng)加上-a標(biāo)示。

我們可以看到一些細(xì)節(jié),與我們第一次運(yùn)行docker ps命令的時(shí)候相比,這里多了一個(gè)重要的列PORTS。

    PORTS
    0.0.0.0:49155->5000/tcp

我們通過(guò)docker run中使用-P標(biāo)示。Docker中開(kāi)放映射到我們主機(jī)的端口。

注意:當(dāng)我們學(xué)習(xí)如果構(gòu)建鏡像的時(shí)候,我們將了解更多關(guān)于如何使用docker端口鏡像的內(nèi)容。

在這種情況下,docker開(kāi)放了5000端口(默認(rèn)Python端口)映射到主機(jī)端口49155上。

Docker可以配置綁定網(wǎng)絡(luò)端口。在最后一個(gè)例子中-P標(biāo)示,是-p 5000的快捷方式,-p 5000可以使端口5000映射到外部的端口(49000到49900端口)。我們也可以指定-p標(biāo)示來(lái)指定端口。舉例:

    $ sudo docker run -d -p 5000:5000 training/webapp python app.py

他將容器的5000端口映射到我們本地主機(jī)5000端口.現(xiàn)在你可能會(huì)問(wèn):為什么我們只使用1對(duì)1端口映射到Docker容器而不是映射到高端口?1:1映射端口只能到你本地主機(jī)的端口。假設(shè)你想要測(cè)試兩個(gè)Python應(yīng)用程序,兩個(gè)容器內(nèi)綁定到端口5000,沒(méi)有足夠的docker的端口映射你只能訪問(wèn)其中一個(gè)。

所以,現(xiàn)在我們打開(kāi)瀏覽器訪問(wèn)端口49155。

http://wiki.jikexueyuan.com/project/docker/images/webapp1.png" alt="應(yīng)用訪問(wèn)" />

我們的應(yīng)用程序可以訪問(wèn)了!

注意:如果你在windows OS X或者Linux上使用boot2docker,您將需要制定虛擬主機(jī)IP,而不是使用本地主機(jī),你可以通過(guò)運(yùn)行boot2docker shell。

    $ boot2docker ip
    The VM's Host only interface IP address is: 192.168.59.103

在這種情況下你可以通過(guò)http://192.168.59.103:49155訪問(wèn)上面的例子。

網(wǎng)絡(luò)端口快捷方式

使用docker ps命令會(huì)返回映射端口,就是有點(diǎn)笨手笨腳的。對(duì)此,docker提供了一種快捷方式:docker port。使用docker port可以查看指定(ID或者名字的)容器的某個(gè)確定端口映射到宿主機(jī)的端口號(hào)。

    $ sudo docker port nostalgic_morse 5000
    0.0.0.0:49155

在這種情況下,我們看到容器的5000端口映射到了宿主機(jī)的的49155端口。

查看WEB應(yīng)用程序日志

讓我們看看我們的容器中的應(yīng)用程序都發(fā)生了什么,使用我們學(xué)習(xí)到的另一個(gè)命令docker logs來(lái)查看。

    $ sudo docker logs -f nostalgic_morse
    * Running on http://0.0.0.0:5000/
    10.0.2.2 - - [23/May/2014 20:16:31] "GET / HTTP/1.1" 200 -
    10.0.2.2 - - [23/May/2014 20:16:31] "GET /favicon.ico HTTP/1.1" 404 -

這次我們添加了一個(gè)標(biāo)示-f。這將使docker log命令中使用tail -f來(lái)查看容器標(biāo)準(zhǔn)輸出。這里我們從應(yīng)用程序日志的5000端口的訪問(wèn)日志條目。

查看我們WEB應(yīng)用程序容器的過(guò)程

我們除了可以查看容器日志,我們還可以使用docker top來(lái)查看容器進(jìn)程:

    $ sudo docker top nostalgic_morse
    PID                 USER                COMMAND
    854                 root                python app.py

這里我們可以看到python app.py在容器里唯一進(jìn)程。

檢查我們的WEB應(yīng)用程序

最后,我們可以使用docker inspect來(lái)查看Docker的底層信息。它會(huì)返回一個(gè)JSON文件記錄docker容器的配置和狀態(tài)信息。

    $ sudo docker inspect nostalgic_morse

來(lái)讓我們看下JSON的輸出。

    [{
        "ID": "bc533791f3f500b280a9626688bc79e342e3ea0d528efe3a86a51ecb28ea20",
        "Created": "2014-05-26T05:52:40.808952951Z",
        "Path": "python",
        "Args": [
           "app.py"
        ],
        "Config": {
           "Hostname": "bc533791f3f5",
           "Domainname": "",
           "User": "",
    . . .

我們也可以針對(duì)我們想要的信息進(jìn)行過(guò)濾,例如,返回容器的IP地址,如下:

    $ sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' nostalgic_morse
    172.17.0.5

停止我們的容器

好吧,我們看到WEB應(yīng)用程序工作。現(xiàn)在我們通過(guò)使用docker stop命令來(lái)停止名為 nostalgic_morse 的容器:

    $ sudo docker stop nostalgic_morse
    nostalgic_morse

現(xiàn)在我們使用docker ps命令來(lái)檢查容器是否停止了。

重啟我們的應(yīng)用程序

哎呀!剛才你停止了另一個(gè)開(kāi)發(fā)人員所使用的容器。這里你現(xiàn)在有兩個(gè)選擇:您可以創(chuàng)建一個(gè)新的容器或者重新啟動(dòng)舊的。讓我們啟動(dòng)我們之前的容器:

    $ sudo docker start nostalgic_morse
    nostalgic_morse

現(xiàn)在運(yùn)行docker ps -l來(lái)查看正在運(yùn)行的容器,或者通過(guò)URL訪問(wèn)來(lái)查看我們的應(yīng)用程序是否響應(yīng)。

注意:也可以使用docker restart命令來(lái)停止容器或然后再啟動(dòng)容器。

移除我們的應(yīng)用程序

你的同事告訴你他們已經(jīng)完成了在容器上的工作,不在需要容器了。讓我們使用docker rm命令來(lái)刪除它:

    $ sudo docker rm nostalgic_morse
    Error: Impossible to remove a running container, please stop it first or use -f
    2014/05/24 08:12:56 Error: failed to remove one or more containers

發(fā)生了什么?實(shí)際上,我們不能刪除正在運(yùn)行的容器。這避免你意外刪除了可能需要的運(yùn)行中的容器。讓我們先停止容器,再試一次。

    $ sudo docker stop nostalgic_morse
    nostalgic_morse
    $ sudo docker rm nostalgic_morse
    nostalgic_morse

現(xiàn)在我們停止并刪除了容器。

注意:刪除容器是最后一步!