Docker 是一個開源的應用容器引擎,基於 Go 語言並聽從Apache2.0協議開源。
Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。
容器是徹底使用沙箱機制,相互之間不會有任何接口,更重要的是容器性能開銷極低。html
Docker與傳統虛擬化的不一樣之處在於:傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整操做系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有本身的內核,並且也沒有進行硬件虛擬。所以容器要比傳統虛擬機更爲輕便。python
Docker的五大優點爲:git
關於其說明,具體可參考網址:http://dockone.io/article/389 。github
本文以Mac系統爲例,講解Docker的安裝,其它系統的安裝方式可參考:安裝 Docker 。web
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 版本:centos
$ docker --version Docker version 18.09.1, build 4c52b90
接着咱們運行docker中的hello world來驗證docker是否安裝且啓動成功:安全
爲了方便展現以及後續的docker使用,咱們最好在DockerHub上註冊一個本身的帳號。 DockerHub,相似於代碼管理的Github,能夠簡單高效地管理咱們的docker項目。
DockerHub的註冊地址爲:https://hub.docker.com/signup,界面以下:
註冊完DockerHub後,咱們登陸我的帳號。點擊Create Repository +
按鈕新建Docker倉庫,名字爲dockertest。以下:
再點擊Create
按鈕便可。建立後的dockertest項目以下:
至此,咱們已經在DockerHub上建立了一個本身的帳號,而且新建的一個dockertest倉庫,儘管這個倉庫裏面沒有任何東西。
下一步,咱們往dockertest這個倉庫裏面裝點什麼。
首先,咱們須要用docker在本地打包一個docker鏡像,而後對其打標籤(tag),而後將其推送(push)至我的的dockerhub帳號中的dockertest倉庫,最後將該鏡像拉下來,並運行。
$ tree mydocker mydocker ├── src │ └── test_docker.py └── test_docker.build
print "hello world from python!" print "this is from docker!"
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。
docker tag be236e996983 jclian91/dockertest:hello_world_test_19.01.31.1100
鏡像ID可經過docker images查看。
docker login
再輸入本身的帳號、密碼便可。
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
docker pull jclian91/dockertest:hello_world_test_19.01.31.1100
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), 歡迎你們關注哦~~