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

 

 

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

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

 原文地址:  https://www.cnblogs.com/phpstudy2015-6/p/9840610.html

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM