標籤:

Docker的一個簡單示例

0.從官網下載與操作系統相應的docker安裝文件並安裝,docker -v查看安裝結果

1.新建一個文件夾,cd進入之

2.下載mirrors.aliyun.com/repo文件放到該文件夾下(用於為容器的yum指定阿里雲的源)

3.在該文件夾下建立index.html(用於拷貝到鏡像中),並建立test_www文件夾(用於掛載到容器中),在test_www文件夾中也建立index.html

4.在該文件夾下建立Dockerfile文件,內容填為:

#以centos為基礎建立鏡像nFROM centosnMAINTAINER qidafang me@427studio.netn#將本地文件Centos-7.repo拷貝到鏡像中作為/etc/yum.repos.d/CentOS-Base.reponADD ./Centos-7.repo /etc/yum.repos.d/CentOS-Base.repon#以下的四行RUN都是執行bash,使用yum安裝nginxnRUN yum clean allnRUN yum makecachenRUN yum -y install epel-releasenRUN yum -y install nginxn#將本地文件index.html拷貝到鏡像的/usr/share/nginx/html下nADD ./index.html /usr/share/nginx/htmln#暴露80埠nEXPOSE 80n#不作為守護進程運行nCMD ["nginx", "-g", "daemon off;"]n

5.使用Dockerfile建立鏡像:

sudo docker build -t="qidafang/test_docker" .n

6.使用鏡像啟動容器:

docker run -p 6080:80 -v $PWD/test_www:/usr/share/nginx/html/test_www qidafang/test_dockern

其中

docker run qidafang/test_docker是使用鏡像啟動容器的標準寫法n-p 6080:80是將容器的80埠綁定到本機的6080埠n-v $PWD/test_www:/usr/share/nginx/html/test_www是將本機的目錄掛載到容器的目錄下,$PWD意為本機當前目錄n

至此,訪問本機的localhost:6080和localhost:6080/test_www都能看到網頁了,區別是前者的網頁文件是拷貝到鏡像中的,而後者的網頁文件是存放在本機,掛載後被容器訪問的。

7.傳輸鏡像:

本機:docker save -o test_docker_image qidafang/test_docker

伺服器:docker load -i test_docker_image

附:

docker的好處:一次配置,到處部署。容器們運行在Docker之上,正如Java程序運行在JVM之上,Docker/JVM屏蔽了底層的細節,使「針對統一的環境進行配置/開發」成為了可能。開發機安裝Docker,伺服器也安裝Docker,在開發機上配置完畢的容器,拿到伺服器上即可直接運行,不必再每次見到一個新的伺服器都哼哧哼哧地進行毫無趣味的配置工作了。

關於服務:把提供服務進程的軟體(如Nginx),做好配置,裝到鏡像里,以後部署的時候把這個鏡像放到伺服器上,啟動容器就可以了。

關於程序:對已經開發完的程序,可以直接放置到鏡像中。開發中的程序則可以放到本地文件夾,用掛載的方式被容器訪問,方便調試。

關於數據:docker應該是無狀態的,所以狀態(如資料庫的數據文件夾)不適合放到docker中。可以把數據文件夾放在本地,把資料庫程序放到docker中,以掛載的方式訪問。

關於鏡像:不要用docker image的方法把容器製作成鏡像,這種鏡像時間久了、轉手多了,後面的人將不知道裡面都有什麼東西。用Dockfile的方式,後面的人通過閱讀Dockerfile,能完全知道製作鏡像的過程中做了些什麼,並可以進行修改。


推薦閱讀:

基於Docker、NodeJs實現高可用的服務發現
Docker從入門到部署-初識Docker
如何使用OpenDroneMap對航拍圖像快速建模
基於Docker、Registrator、Zookeeper實現的服務自動註冊

TAG:Docker |