Docker入門(一)用hello world入門docker
初識Docker
Docker是什麼?
Docker 是一個開源的應用容器引擎,基於 Go 語言並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面,更重要的是容器效能開銷極低。
Docker與傳統虛擬化的不同之處
Docker與傳統虛擬化的不同之處在於:傳統虛擬機器技術是虛擬出一套硬體後,在其上執行一個完整作業系統,在該系統上再執行所需應用程序;而容器內的應用程序直接運行於宿主的核心,容器內沒有自己的核心,而且也沒有進行硬體虛擬。因此容器要比傳統虛擬機器更為輕便。
Docker的優勢
Docker的五大優勢為:
- 持續整合
- 版本控制
- 可移植性
- 隔離性
- 安全性
關於其說明,具體可參考網址: http://dockone.io/article/389 。
Docker的安裝
本文以Mac系統為例,講解Docker的安裝,其它系統的安裝方式可參考: 安裝 Docker 。
使用 Homebrew 安裝
Homebrew 的 Cask 已經支援 Docker for Mac,因此可以很方便的使用 Homebrew Cask 來進行安裝:
brew cask install docker
手動下載安裝
如果需要手動下載,可以通過這個連結下載: https://download.docker.com/mac/stable/Docker.dmg 。如同 MacOS 其它軟體一樣,安裝也非常簡單,雙擊下載的 .dmg
檔案,然後將鯨魚圖示拖拽到 Application
資料夾即可。
啟動Docker
從應用中找到 Docker 圖示並點選,即可啟動Docker,啟動後在最上側的選單欄狀態如下:
啟動終端後,通過命令可以檢查安裝後的 Docker 版本:
$ docker --version Docker version 18.09.1, build 4c52b90
接著我們執行docker中的hello world來驗證docker是否安裝且啟動成功:
Dockerhub賬號註冊
為了方便展示以及後續的docker使用,我們最好在DockerHub上註冊一個自己的賬號。 DockerHub,類似於程式碼管理的Github,可以簡單高效地管理我們的docker專案。
DockerHub的註冊地址為: https://hub.docker.com/signup ,介面如下:
註冊完DockerHub後,我們登入個人賬號。點選 Create Repository +
按鈕新建Docker倉庫,名字為dockertest。如下:
再點選 Create
按鈕即可。建立後的dockertest專案如下:
至此,我們已經在DockerHub上建立了一個自己的賬號,並且新建的一個dockertest倉庫,儘管這個倉庫裡面沒有任何東西。
下一步,我們往dockertest這個倉庫裡面裝點什麼。
Docker使用例項:hello world
首先,我們需要用docker在本地打包一個docker映象,然後對其打標籤(tag),然後將其推送(push)至個人的dockerhub賬號中的dockertest倉庫,最後將該映象拉下來,並執行。
映象打包
- 新建mydocker資料夾
$ tree mydocker mydocker ├── src │└── test_docker.py └── test_docker.build
- test_docker.py程式碼:
print "hello world from python!" print "this is from docker!"
- test_docker.build程式碼(利用Dockerfile打包映象):
FROM centos:7.2.1511 #環境變數硬編碼及時區 ENV ENVIRONMENT DOCKER_PROD RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 拷貝並so加密程式碼 COPY src /root/src # 工作目錄 WORKDIR /root/src/
這裡,我們不再過多講述上述Dockerfile中的命令,有興趣的同學可移步: http://blog.51cto.com/wutengf... , 筆者也會在後續的文章中給出Dockerfile命令的詳細講述。
- 命令列打包映象:
cd ./mydocker docker build -f test_docker.build -t hub.docker.com/dockertest:test.1111 .
列出映象
在打包完映象後,我們可以列出docker的映象,檢視映象的ID,方便後續操作。命令為 docker images
,如下:
由此可知,我們新打包的docker映象的ID為be236e996983。
推送映象
- 打標籤(tag)
docker tag be236e996983 jclian91/dockertest:hello_world_test_19.01.31.1100
映象ID可通過docker images檢視。
- 登入dockerhub賬號
docker login
再輸入自己的賬號、密碼即可。
- 推送(push)映象
docker push jclian91/dockertest:hello_world_test_19.01.31.1100
所有命令的介面如下:
此時,我們去dockerhub的dockertest倉庫中去檢視,發現已經上傳一個映象了,如下:
執行映象
- 為了執行新上傳的映象,我們先刪除本地打包的映象:
$ docker rmi -f be236e996983 Untagged: jclian91/dockertest:hello_world_test_19.01.31.1100 Untagged: jclian91/dockertest@sha256:c2ac02cb725a8256c2d752461133004cc05a6060390220b15a0aaefefc7c95e7 Untagged: hub.docker.com/dockertest:test.1111 Deleted: sha256:be236e996983339318796f588fd5acda1da5f942289a2559f948a4811d68428d Deleted: sha256:5c46baa463a1e86d0924c493bb0e12888fc6aaefdcaf128d8193406eb0ef4ed1 Deleted: sha256:f76e87a3e84bf1a03e81dfdc53a569a7adce6cfc80bb56d7d2040e118e2848f7
- 拉取(pull)新上傳的映象
docker pull jclian91/dockertest:hello_world_test_19.01.31.1100
- 執行(run)該映象
docker run -it be236e996983 bash
引數說明:其中 -i
:互動式操作, -t
:終端,如存在-d引數, -d
:後臺執行。
這樣我們就能進入到這臺用docker建立好的虛擬機器內部了,我們在該Linux虛擬機器內部執行命令,如下:
[root@ca9070ce82e1 src]# ls test_docker.py [root@ca9070ce82e1 src]# python test_docker.py hello world from python! this is from docker!
總結
hello world是所有程式語言的入門例子,在本文中,我們用docker自己建立了一個hello world的例子,用來展示docker的基本用法,希望能給初入門的同學一個明顯直觀的例子。
後續的文章將會更多地介紹docker方面的知識,歡迎大家關注,如有任何疑問,請在留言區留言。
注意:本人現已開通微信公眾號: Python爬蟲與演算法(微訊號為:easy_web_scrape), 歡迎大家關注哦~~
參考文獻:
- Docker —— 從入門到實踐: https://yeasy.gitbooks.io/doc...
- Docker基本介紹和操作: http://blog.51cto.com/wutengf...
- Docker 教程: http://www.runoob.com/docker/...
- 《第一本Docker書 修訂版》 詹姆斯·特恩布林 人民郵電出版社