1. 程式人生 > >Docker之初識(一)

Docker之初識(一)

1、簡介

  今年四月份公司逐步改用docker容器來部署應用,當時自己剛踏出學校大門,平時開發都是環境都是早已安裝好,因此一直沒怎麼了解Docker這玩意。公司裡各位開發大佬說這是個好東西,可以很方便的部署遷移一個應用,當時自己一臉懵逼。通過這幾個月的學習與使用,自己也逐步瞭解了Docker,因此抽出空餘時間來寫一寫docker的知識總結與大家分享。

Docker的官方簡介:

  Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。

  Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。

  容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。

我的個人理解就是:

  每一個Docker容器相當於一個完全封閉的(虛擬)盒子,預設狀態下的盒子與盒子之間是不能夠進行通訊,並且都寄存在宿主機上面。若要使盒子與盒子、盒子與宿主機之間進行通訊需要人為去設定,給他開闢一條通訊通道。

  Doker的應用場景有很多,最常見的就是Web應用的自動化打包和釋出、自動化測試和持續整合釋出、方便部署分散式應用等,而我司的Web應用就是結合Docker進行自動化打包和釋出。

2、Docker使用

  2.1、docker安裝  

  docker支援Windows、MacOS、Linux等系統,安裝過程我這裡就不介紹了,在網上有很多資源。

  安裝後進入命令列執行docker命令來判斷docker是安裝成功。

  看到有Options輸出則表示安裝成功。

  2.2、我們平時安裝軟體的第一步是做什麼咧?

  每當我們安裝軟體的第一步是做什麼呢?毫無疑問,那就是search查詢安裝包啦!

  那麼docker中的查詢"安裝包"的命令是什麼呢?

  很簡單,那就是docker search 軟體名;

docker search nginx;    // 查詢nginx

  執行該命令後,將會出現一系列的搜尋結果。

  2.3、找到軟體後那就下載軟體啦

  docker中與我們平常下載軟體這一動作相對應的命令就是:docker pull 軟體名;(但平時我們把這一動作叫做拉取映象)

docker pull nginx;  // 拉取nginx的映象

執行命令後將會開始拉取nginx映象

拉取成功我們使用docker images;命令可以檢視已經拉取的映象列表。

docker images;    // 檢視已拉取的映象列表

 

  2.4、軟體已經下載好了下一步又是做什麼咧

  docker中於普通軟體安裝相對應的命令是docker run 軟體名;(我們把這一動作稱為:從該映象中建立容器)

  在建立容器的時候,我們一般還會新增一些其他引數,以便更好的管理使用應用。

  在此之前我們需要先建立兩個檔案目錄,www和nginx/conf.d,並在nginx中新建一個defalut.conf配置檔案

mkdir www;mkdir -p nginx/conf.dvi nginx/conf.d/default.conf    // default.conf檔案內容在下面docker run -p 8080:80 -d -v $PWD/www:/usr/share/nginx/html -v $PWD/nginx/conf.d:/etc/nginx/conf.d  --name mynginx  nginx# -p 指定繫結埠(埠對映,將容器中的80埠繫結到主機中的8080埠)# -v 將主機中的當前www目錄掛載到容器中的/usr/share/nginx/html目錄中# -d 讓容器在後臺執行
#defalut.conf檔案server {
listen  80 default_server;
server_name _;
  root   /usr/share/nginx/html;
  location / {   index index.html index.htm index.php;
  autoindex off;
  }
          location ~ \.php(.*)$ {
          root   /var/www/html/;
          fastcgi_pass 172.17.0.2:9000;
          fastcgi_index index.php;
          fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param PATH_INFO $fastcgi_path_info;
          fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
          include  fastcgi_params;
  }
 }

建立容器後我們可以通過docker ps檢視正在執行的容器。

  2.5、檢測執行的容器應用是否能夠正常工作

   因為我們在建立容器的時候已經將當前目錄下的www目錄對映到容器中nginx的/usr/share/nginx/html工作根目錄,因此我們在當前www目錄下新增一個index.html檔案

# 在www目錄下新建index.html檔案,並任意寫一些字串
vi index.html

   由於Windows系統中的docker是通過一個VM虛擬機器為橋樑搭建的,我們在docker中建立容器時所映射出來的ip埠是指向虛擬機器的,因此我們需要通過虛擬機器的ip和埠進行訪問容器。(注:Windows系統相對比較特殊需要藉助VM實現,而MacOS和Linux則不需要,因此容器所關聯的埠是宿主機127.0.0.1的)

檢視該VM的ip:

在ip在執行docker的時候所展示出來的ip

在瀏覽器中訪問192.168.99.100:8080

3、總結

   使用docker搭建一個小demo還比較簡單的,只需要幾個命令即可,但是我們還是需要好好了解映象、容器、宿主機他們三者的關係,思考他們是如何通訊,如何使用docker構建一個完整的應用環境等。

在這篇部落格中主要涉及到的一些命令有:

docker search **
docker pull **
docker run -p 8080:80 -d -v $PWD/www:/usr/share/nginx/html -v $PWD/nginx/conf.d:/etc/nginx/conf.d  --name mynginx  nginx
docker ps

(以上是自己的一些見解,若有不足或者錯誤的地方請各位指出)

 宣告:本部落格文章為原創,只代表本人在工作學習中某一時間內總結的觀點或結論。轉載時請在文章頁面明顯位置給出原文連結