Docker之初識(一)

一、簡介

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

Docker的官方簡介:html

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

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

  容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。瀏覽器

個人我的理解就是:app

  每個Docker容器至關於一個徹底封閉的(虛擬)盒子,默認狀態下的盒子與盒子之間是不可以進行通信,而且都寄存在宿主機上面。若要使盒子與盒子、盒子與宿主機之間進行通信須要人爲去設置,給他開闢一條通訊通道。分佈式

 

  Doker的應用場景有不少,最多見的就是Web應用的自動化打包和發佈、自動化測試和持續集成發佈、方便部署分佈式應用等,而我司的Web應用就是結合Docker進行自動化打包和發佈。性能

  

二、Docker使用

  2.一、docker安裝  

  docker支持Windows、MacOS、Linux等系統,安裝過程我這裏就不介紹了,在網上有不少資源。學習

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

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

 

  2.二、咱們平時安裝軟件的第一步是作什麼咧?

  每當咱們安裝軟件的第一步是作什麼呢?毫無疑問,那就是search查找安裝包啦!

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

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

docker search nginx;    // 查找nginx

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

  2.三、找到軟件後那就下載軟件啦

  docker中與咱們日常下載軟件這一動做相對應的命令就是:docker pull 軟件名;(但平時咱們把這一動做叫作拉取鏡像)

docker pull nginx;  // 拉取nginx的鏡像

執行命令後將會開始拉取nginx鏡像

拉取成功咱們使用docker images;命令能夠查看已經拉取的鏡像列表。

docker images;    // 查看已拉取的鏡像列表

 

  2.四、軟件已經下載好了下一步又是作什麼咧

  docker中於普通軟件安裝相對應的命令是docker run 軟件名;(咱們把這一動做稱爲:從該鏡像中建立容器)

  在建立容器的時候,咱們通常還會添加一些其餘參數,以便更好的管理使用應用。

  在此以前咱們須要先創建兩個文件目錄,www和nginx/conf.d,並在nginx中新建一個defalut.conf配置文件

mkdir www;
mkdir -p nginx/conf.d
vi 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.五、檢測運行的容器應用是否可以正常工做

   由於咱們在建立容器的時候已經將當前目錄下的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

三、總結

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

 

 

(以上是本身的一些看法,如有不足或者錯誤的地方請各位指出)

 做者:那一葉隨風   http://www.cnblogs.com/phpstudy2015-6/

 原文地址:  http://www.javashuo.com/article/p-pwrckkgt-ex.html

 聲明:本博客文章爲原創,只表明本人在工做學習中某一時間內總結的觀點或結論。轉載時請在文章頁面明顯位置給出原文連接

相關文章
相關標籤/搜索