<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 3. docker 的容器 #### 1. 介紹 上一篇:[docker的鏡像和鏡像源加速(二)](https://www.rails365.net/articles/docker-de-jing-xiang-he-jing-xiang-yuan-jia-su-er) 之前我們下載了`hello-world`這個鏡像,現在把它運行起來。 使用`docker run`命令。 比如: ``` $ docker run hello-world ``` 主要是輸出一些文本信息,然后就退出了。 使用`docker ps`可以查看容器的進程。 不過是空的,因為一運行就退出,只是輸出信息,輸出完就結束了。 可以使用`docker ps -a`來查看退出過的進程。 比如: ``` $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b25a96c17bf4 hello-world "/hello" About a minute ago Exited (0) About a minute ago mystifying_saha ``` #### 2. 運行容器 上面只是演示hello world而已,我們運行些有用點的容器。 比如: ``` $ docker run -it ubuntu bash ``` 運行的是ubuntu這個鏡像,如果你的系統上沒有這個鏡像,會先下載下來。 `bash`是表示進入那個ubuntu的鏡像的容器的shell,-t 選項讓Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入上, -i 則讓容器的標準輸入保持打開。 這樣就相當于進入了另一臺ubuntu。 而且這個ubuntu跟你原來的系統是隔離的。 這樣也沒多大意義,我們經常會用docker來跑一些服務,比如web服務。 那就運行一個nginx容器試試。 ``` $ docker run -d -p 80:80 --name webserver nginx ``` 鏡像名稱是`nginx`,`--name`表示為這個容器取個名稱叫`webserver`。 運行之后,你用`docker ps`查看一下容器。 ``` $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1d4b615709b nginx "nginx -g 'daemon ..." 5 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 443/tcp webserver ``` 然后你可以使用`curl http://127.0.0.1`查看一下,是否運行了nginx服務。 使用`docker stop`命令可以停止這個容器的運行。 比如: ``` $ docker stop webserver ``` 停止之后輸入`docker ps`發現是空的,這個時候要輸入`docker ps -a`才能查看退出的容器。 可以使用下面這條命令,清除所有已退出的容器。 ``` $ docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }') ``` 之前運行nginx容器的時候,有使用`-p 80:80`這個參數。 這個表示端口映射。 解釋前,我們先來改一下。 ``` $ docker run -d -p 8080:80 --name webserver nginx ``` 查看一下運行狀態: ``` $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45e47ed889f8 nginx "nginx -g 'daemon ..." 4 seconds ago Up 3 seconds 443/tcp, 0.0.0.0:8080->80/tcp webserver ``` 現在你可以需要使用`curl http://127.0.0.1:8080`才能訪問了。 也就是說,`-p`參數中,第一個端口是暴露在外面的端口,外面可以訪問的端口。 至于`-d`嘛,就是以守護態運行。 有些應用根本就不需要暴露接口在外面,比如下面這個: ``` $ docker ps mposenginx_gitlab_1 7e4493b736d2 sameersbn/postgresql:9.5-4 "/sbin/entrypoint.sh" 2 days ago Up 2 days 5432/tcp gitlabcomposenginx_postgresql_1 8cd6c90f9a52 sameersbn/redis:latest "/sbin/entrypoint.sh " 2 days ago Up 2 days 6379/tcp ``` 這兩個端口在外部是無法訪問的,沒有綁定在0.0.0.0這個ip上,這個有什么用呢。 其實有個參數是`--link`,供單機的容器之間打通一個網絡通道,這樣不必通過ip來訪問,而是一個別名。 比如,先運行兩個容器: ``` $ docker run --name gitlab-postgresql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --env 'DB_EXTENSION=pg_trgm' \ --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \ sameersbn/postgresql:9.6-2 $ docker run --name gitlab-redis -d \ --volume /srv/docker/gitlab/redis:/var/lib/redis \ sameersbn/redis:latest ``` 這兩個容器有兩個名稱,分別是`gitlab-postgresql`和`gitlab-redis`。 然后再啟動一個暴露接口的容器,去連接這兩個容器。 ``` $ docker run --name gitlab -d \ --link gitlab-postgresql:postgresql --link gitlab-redis:redisio \ --publish 10022:22 --publish 10080:80 \ --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \ --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \ --env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \ --env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:8.16.6 ``` 其中`postgresql`和`redisio`是容器的主機別名。 使用`docker restart`命令可以重啟容器。 還有一個參數比較常用,就是`-rm`,這個參數是說容器退出后隨之將其刪除。默認情況下,為了排障需求,退出的容器并不會立即刪除,除非手動 docker rm 。我們這里只是隨便執行個命令,看看結果,不需要排障和保留結果,因此使用 –rm 可以避免浪費空間。 完結。 下一篇: [理解docker鏡像的層疊結構(四)](https://www.rails365.net/articles/li-jie-docker-jing-xiang-de-ceng-die-jie-gou)
                  <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>

                              哎呀哎呀视频在线观看