1. 程式人生 > >在win10 docker啟動的centos容器中安裝nginx

在win10 docker啟動的centos容器中安裝nginx

在win10機器上搭建了一個docker,在docker啟動了centos容器,在centos中安裝nginx。

  • 安裝配置docker

          直接在官網下載docker for windows:https://store.docker.com/editions/community/docker-ce-desktop-windows

          下載完成,點選按照預設一步步安裝就行了。

          如果希望加快pull映象的速度,可以選擇配置一個阿里雲映象加速器。

  • 安裝centos

         用管理員身份執行docker,根據實踐來看,如果不這樣做的話,docker容器無法ping 通外外網。

        從阿里雲映象服務中拉取一個centos映象:docker pull registry.cn-hangzhou.aliyuncs.com/max/centos6.7-docker

        啟動容器:docker run --name my-cnt-centos-6.7  -itd -p 80:80  <映象> /bin/bash

 例如: 

(docker run --name my-cnt-centos-6.7  -itd -p 80:80  registry.cn-hangzhou.aliyuncs.com/max/centos6.7-docker  /bin/bash)

        檢視執行的容器:docker ps,找到剛剛啟動的容器id

        進入這個容器:docker exec -it <容器id>  /bin/bash

     這樣便成功啟動了centos。

  • 安裝Nginx

          必要的環境安裝:yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel

          下載nginx: cd /usr/local ,wget http://nginx.org/download/nginx-1.7.4.tar.gz

           解壓nginx:tar -zxvf nginx-1.7.4.tar.gz

          安裝nginx:進入解壓目錄,執行./configure prefix=/usr/local/nginx,配置安裝目錄;執行make和make install命令,就安裝完成了。

  • 訪問Nginx

          這裡或許就是我寫這篇隨筆的目的,因為的確在這裡耽擱了很長的時間。

          遇到的第一個問題,centos中始終無法ping通外網,後來改為用管理員啟動docker後,再次啟動centos就解決了這個問題。

          遇到的第二個問題,如何訪問Nginx,因為直接在瀏覽器中輸入centos的IP,無法訪問到Nginx的welcome頁面。後來才知道宿主機要訪問docker容器中的服務,

         必須要進行埠對映,在啟動容器時,如果不配置宿主機器與docker容器的埠對映,外部是無法訪問docker容器。這就是為什麼我在前面啟動centos時,

         加了-p 80:80埠對映的原因。然後需要通過:localhost:80進行訪問。

容器的管理(建立、檢視、啟動、終止、刪除)

一、建立

  • docker create:建立容器,處於停止狀態。 

這裡寫圖片描述

  • centos:latest:centos容器:最新版本(也可以指定具體的版本號)。
  • 本地有就使用本地映象,沒有則從遠端映象庫拉取。
  • 建立成功後會返回一個容器的ID。
  • docker run:建立並啟動容器。

互動型容器:執行在前臺,容器中使用exit命令或者呼叫docker stop、docker kill命令,容器停止。

如下圖已經在前臺開啟一個docker容器: 
這裡寫圖片描述

  • i:開啟容器的標準輸入。
  • t:告訴docker為容器建立一個命令列終端。
  • name:指定容器名稱,可以不填(隨機),建議根據具體使用功能命名,便於管理。
  • centos:告訴我們使用什麼映象來啟動容器。
  • /bin/bash:告訴docker要在容器裡面執行此命令。

後臺型容器:執行在後臺,建立後與終端無關,只有呼叫docker stop、docker kill命令才能使容器停止。

這裡寫圖片描述

  • d:使用-d引數,使容器在後臺執行。
  • c: 通過-c可以調整容器的CPU優先順序。預設情況下,所有的容器擁有相同的CPU優先順序和CPU排程週期,但你可以通過Docker來通知核心給予某個或某幾個容器更多的CPU計算週期。比如,我們使用-c或者–cpu-shares =0啟動了C0、C1、C2三個容器,使用-c/–cpu-shares=512啟動了C3容器。這時,C0、C1、C2可以100%的使用CPU資源(1024),但C3只能使用50%的CPU資源(512)。如果這個主機的作業系統是時序排程型別的,每個CPU時間片是100微秒,那麼C0、C1、C2將完全使用掉這100微秒,而C3只能使用50微秒。
  • -c後的命令是迴圈,從而保持容器的執行。
  • docker ps:可以檢視正在執行的docker容器。

二、檢視

  • docker ps: 檢視當前執行的容器
  • docker ps -a:檢視所有容器,包括停止的。

這裡寫圖片描述

  • 標題含義:

    • CONTAINER ID:容器的唯一表示ID。
    • IMAGE:建立容器時使用的映象。
    • COMMAND:容器最後執行的命令。
    • CREATED:建立容器的時間。
    • STATUS:容器狀態。
    • PORTS:對外開放的埠。
    • NAMES:容器名。可以和容器ID一樣唯一標識容器,同一臺宿主機上不允許有同名容器存在,否則會衝突。
  • docker ps -l :檢視最新建立的容器,只列出最後建立的。

  • docker ps -n=2:-n=x選項,會列出最後建立的x個容器。

這裡寫圖片描述

三、啟動

通過docker start來啟動之前已經停止的docker_run映象。

  • 容器名:docker start docker_run,或者ID:docker start 43e3fef2266c
  • –restart(自動重啟):預設情況下容器是不重啟的,–restart標誌會檢查容器的退出碼來決定容器是否重啟容器。 
    • docker run --restart=always --name docker_restart -d centos /bin/sh -c "while true;do echo hello world; sleep;done":
    • --restart=always:不管容器的返回碼是什麼,都會重啟容器。
    • --restart=on-failure:5:當容器的返回值是非0時才會重啟容器。5是可選的重啟次數。 
  • 這裡寫圖片描述

四、終止

  • docker stop [NAME]/[CONTAINER ID]:將容器退出。
  • docker kill [NAME]/[CONTAINER ID]:強制停止一個容器。

這裡寫圖片描述

五、刪除

容器終止後,在需要的時候可以重新啟動,確定不需要了,可以進行刪除操作。

  • docker rm [NAME]/[CONTAINER ID]:不能夠刪除一個正在執行的容器,會報錯。需要先停止容器。 
  • 這裡寫圖片描述
  • 一次性刪除:docker本身沒有提供一次性刪除操作,但是可以使用如下命令實現:

    • docker rm 'docker ps -a -q'-a標誌列出所有容器,-q標誌只列出容器的ID,然後傳遞給rm命令,依次刪除容器。