<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                在上一節的 Docker 用戶指南中,我們啟動了我們的第一個容器。而后邊的例子中我們使用?`docker run`?命令啟動了兩個容器 * 與前臺進行交互的容器 * 以進程方式在后臺運行的容器 在這個過程中,我們學習到了幾個 Docker 命令: * `docker ps`?列出容器 * `docker logs`?顯示容器的標準輸出 * `docker stop`?停止正在運行的容器 > 提示:另一種學習?`docker`?命令的方式就是查看我們的?[交互式教程頁面。](https://www.docker.com/tryit/) `docker`?客戶端非常簡單 。Docker 的每一項操作都是通過命令行來實現的,而每一條命令行都可以使用一系列的標識(flags)和參數。 ~~~ # Usage: [sudo] docker [flags] [command] [arguments] .. # Example: $ docker run -i -t ubuntu /bin/bash ~~~ 讓我們看看這個使用?`docker version`?命令的操作,它將返回當前安裝的 Docker 客戶端和進程的版本信息。 ~~~ $ sudo docker version ~~~ 這個命令不僅返回了您使用的 Docker 客戶端和進程的版本信息,還返回了 GO 語言的版本信息( Docker的編程語言 )。 ~~~ 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 客戶端都能做什么 我們可以通過只輸入不附加任何參數的?`docker`?命令來運行 docker 二進制文件,這樣我們就會查看到 Docker 客戶端的所有命令選項。 ~~~ $ sudo docker ~~~ 會看到當前可用的所有命令行列表: ~~~ 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]`,這里會看到 docker 命令的使用方法: ~~~ $ sudo docker attach Help output . . . ~~~ 或者你可以通過在 docker 命令中使用?`--help`?標識(flags) ~~~ $ sudo docker images --help ~~~ 這將返回所有的幫助信息和可用的標識(flags): ~~~ 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) ~~~ > 注意:你可以點擊[這里](https://docs.docker.com/reference/commandline/cli/)?來查看完整的 Docker 命令行列表和使用方法。 ## 在Docker中運行一個web應用 到這里我們了解了更多關于 docker 客戶端的知識,而現在我們需要將學習的焦點轉移到重要的部分:運行多個容器。到目前為止我們發現運行的容器并沒有一些什么特別的用處。讓我們通過使用 docker 構建一個 web 應用程序來運行一個web應用程序來體驗一下。 在這個 web 應用中,我們將運行一個 Python Flask 應用。使用?`docker run`?命令。 ~~~ $ sudo docker run -d -P training/webapp python app.py ~~~ 讓我們來回顧一下我們的命令都做了什么。我們指定兩個標識(flags)?`-d`?和?`-P`?。我們已知是?`-d`?標識是讓 docker 容器在后臺運行。新的?`-P`?標識通知 Docker 將容器內部使用的網絡端口映射到我們使用的主機上。現在讓我們看看我們的 web 應用。 This image is a pre-built image we've created that contains a simple Python Flask web application. 我們指定了?`training/web`?鏡像。我們創建容器的時候使用的是這個預先構建好的鏡像,并且這個鏡像已經包含了簡單的 Python Flask web 應用程序。 最后,我們指定了我們容器要運行的命令:?`python app.py`。這樣我們的 web 應用就啟動了。 > 注意:你可以在[命令參考](http://docs.docker.com/reference/commandline/cli/#run)和[Docker run參考](http://docs.docker.com/reference/run/)查看更多?`docker run`?命令細節 ## 查看 WEB 應用容器 現在我們使用?`docker ps`?來查看我們正在運行的容器。 ~~~ $ 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 ~~~ 你可以看到我們在?`docker ps`?命令中指定了新的標識?`-l`。這樣組合的?`docker ps`?命令會返回最后啟動容器的詳細信息。 > 注意:默認情況下,`docker ps`?命令只顯示運行中的容器。如果你還想看已經停止的容器,請加上?`-a`?標示。 我們這里可以看到一些細節,與我們第一次運行?`docker ps`?命令的時候相比,這里多了一個?`PORTS`?列。 ~~~ PORTS 0.0.0.0:49155->5000/tcp ~~~ 我們通過在?`docker run`?中使用?`-P`?標示(flags) 來將我們 Docker 鏡像內部容器端口暴露給主機。 > 提示:當我們學習[如何構建鏡像的時候](https://github.com/widuu/chinese_docker/blob/master/userguide/dockerimages.md),我們將了解更多關于如何開放 Docker 鏡像端口。 在這種情況下,Docker 開放了 5000 端口(默認 Python Flask 端口)映射到主機端口 49155 上。 Docker 能夠很容易的配置和綁定網絡端口。在最后一個例子中?`-P`?標識(flags)是?`-p 5000`?的縮寫,它將會把容器內部的 5000 端口映射到本地 Docker 主機的高位端口上(這個端口的通常范圍是 32768 至 61000)。我們也可以指定?`-p`?標識來綁定指定端口。舉例: ~~~ $ sudo docker run -d -p 5000:5000 training/webapp python app.py ~~~ 這將會把容器內部的 5000 端口映射到我們本地主機的 5000 端口上。你可能現在會問:為什么我們只使用 1對1端口映射的方式將端口映射到 Docker 容器, 而不是采用自動映射高位端口的方式?這里 1:1 映射方式能夠保證映射到本地主機端口的唯一性。假設你想要測試兩個 Python 應用程序,兩個容器內部都綁定了端口5000,這樣就沒有足夠的 Docker 的端口映射,你只能訪問其中一個。 所以,現在我們打開瀏覽器訪問端口49155。 ![2015-06-25/558b6b878c408](https://box.kancloud.cn/2015-06-25_558b6b878c408.png) 我們的應用程序可以訪問了! > 注意:如果你在 OS X windows或者Linux上使用 boot2docker 虛擬機,你需要獲取虛擬機的 ip 來代替localhost 使用,你可以通過運行 boot2docker shell 來獲取 ip。 ~~~ $ boot2docker ip The VM's Host only interface IP address is: 192.168.59.103 ~~~ > 在這種情況下,你可以通過輸入?[http://192.168.59.103:49155](http://192.168.59.103:49155/)?來訪問上面的例子。 ### 查看網絡端口快捷方式 使用?`docker ps`?命令來會返回端口的映射是一種比較笨拙的方法。為此,Docker 提供了一種快捷方式:?`docker port`,使用?`docker port`?可以查看指定 (ID或者名字的)容器的某個確定端口映射到宿主機的端口號。 ~~~ $ sudo docker port nostalgic_morse 5000 0.0.0.0:49155 ~~~ 在這種情況下,我們看到容器的 5000 端口映射到了宿主機的的 49155 端口。 ### 查看WEB應用程序日志 讓我們看看我們的容器中的應用程序都發生了什么,這里我們使用學習到的另一個命令?`docker logs`?來查看。 ~~~ $ 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 - ~~~ 這次我們添加了一個?`-f`?標識。?`docker log`?命令就像使用?`tail -f`?一樣來輸出容器內部的標準輸出。這里我們從顯示屏上可以看到應用程序使用的是 5000 端口并且能夠查看到應用程序的訪問日志。 ### 查看WEB應用程序容器的進程 我們除了可以查看容器日志,我們還可以使用?`docker top`?來查看容器內部運行的進程: ~~~ $ sudo docker top nostalgic_morse PID USER COMMAND 854 root python app.py ~~~ 這里我們可以看到?`python app.py`?在容器里唯一進程。 ### 檢查WEB應用程序 最后,我們可以使用?`docker inspect`?來查看Docker的底層信息。它會返回一個 JSON 文件記錄著 Docker 容器的配置和狀態信息。 ~~~ $ sudo docker inspect nostalgic_morse ~~~ 來讓我們看下JSON的輸出。 ~~~ [{ "ID": "bc533791f3f500b280a9626688bc79e342e3ea0d528efe3a86a51ecb28ea20", "Created": "2014-05-26T05:52:40.808952951Z", "Path": "python", "Args": [ "app.py" ], "Config": { "Hostname": "bc533791f3f5", "Domainname": "", "User": "", . . . ~~~ 我們也可以針對我們想要的信息進行過濾,例如,返回容器的 IP 地址,如下: ~~~ $ sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' nostalgic_morse 172.17.0.5 ~~~ ### 停止WEB應用容器 現在,我們的WEB應用程序處于工作狀態。現在我們通過使用?`docker stop`?命令來停止名為?`nostalgic_morse`?的容器: ~~~ $ sudo docker stop nostalgic_morse nostalgic_morse ~~~ 現在我們使用?`docker ps`?命令來檢查容器是否停止了。 ~~~ $ sudo docker ps -l ~~~ ### 重啟WEB應用容器 哎呀!剛才你停止了另一個開發人員所使用的容器。這里你現在有兩個選擇:您可以創建一個新的容器或者重新啟動舊的。讓我們啟動我們之前的容器: ~~~ $ sudo docker start nostalgic_morse nostalgic_morse ~~~ 現在再次運行?`docker ps -l`?來查看正在運行的容器,或者通過URL訪問來查看我們的應用程序是否響應。 > 注意:也可以使用?`docker restart`?命令來停止容器然后再啟動容器。 ### 移除WEB應用容器 你的同事告訴你他們已經完成了在容器上的工作,不在需要容器了。讓我們使用?`docker rm`?命令來刪除它: ~~~ $ 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 ~~~ 發生了什么?實際上,我們不能刪除正在運行的容器。這避免你意外刪除了正在使用并且運行中的容器。讓我們先停止容器,然后再試一試刪除容器。 ~~~ $ sudo docker stop nostalgic_morse nostalgic_morse $ sudo docker rm nostalgic_morse nostalgic_morse ~~~ 現在我們停止并刪除了容器。 > 注意:刪除容器是最后一步!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看