Docker入門(一)用hello world入門docker

初識Docker

Docker是什麼?

  Docker 是一個開源的應用容器引擎,基於 Go 語言並聽從Apache2.0協議開源。
  Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。
  容器是徹底使用沙箱機制,相互之間不會有任何接口,更重要的是容器性能開銷極低。html

Docker與傳統虛擬化的不一樣之處

  Docker與傳統虛擬化的不一樣之處在於:傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整操做系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有本身的內核,並且也沒有進行硬件虛擬。所以容器要比傳統虛擬機更爲輕便。python

Docker的優點

  Docker的五大優點爲:git

  • 持續集成
  • 版本控制
  • 可移植性
  • 隔離性
  • 安全性

關於其說明,具體可參考網址:http://dockone.io/article/389github

Docker的安裝

  本文以Mac系統爲例,講解Docker的安裝,其它系統的安裝方式可參考:安裝 Dockerweb

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

  啓動終端後,經過命令能夠檢查安裝後的 Docker 版本:centos

$ docker --version
Docker version 18.09.1, build 4c52b90

  接着咱們運行docker中的hello world來驗證docker是否安裝且啓動成功:安全

docker run hello-world

Dockerhub帳號註冊

  爲了方便展現以及後續的docker使用,咱們最好在DockerHub上註冊一個本身的帳號。 DockerHub,相似於代碼管理的Github,能夠簡單高效地管理咱們的docker項目。
  DockerHub的註冊地址爲:https://hub.docker.com/signup,界面以下:

DockerHub註冊界面

  註冊完DockerHub後,咱們登陸我的帳號。點擊Create Repository +按鈕新建Docker倉庫,名字爲dockertest。以下:

create repository

再點擊Create按鈕便可。建立後的dockertest項目以下:

dockertest倉庫

  至此,咱們已經在DockerHub上建立了一個本身的帳號,而且新建的一個dockertest倉庫,儘管這個倉庫裏面沒有任何東西。
  下一步,咱們往dockertest這個倉庫裏面裝點什麼。

Docker使用實例:hello world

  首先,咱們須要用docker在本地打包一個docker鏡像,而後對其打標籤(tag),而後將其推送(push)至我的的dockerhub帳號中的dockertest倉庫,最後將該鏡像拉下來,並運行。

鏡像打包
  1. 新建mydocker文件夾
$ tree mydocker
mydocker
├── src
│   └── test_docker.py
└── test_docker.build
  1. test_docker.py代碼:
print "hello world from python!"
print "this is from docker!"
  1. 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命令的詳細講述。

  1. 命令行打包鏡像:
cd ./mydocker
docker build -f test_docker.build -t hub.docker.com/dockertest:test.1111 .

docker打鏡像

列出鏡像

  在打包完鏡像後,咱們能夠列出docker的鏡像,查看鏡像的ID,方便後續操做。命令爲docker images,以下:

docker images

由此可知,咱們新打包的docker鏡像的ID爲be236e996983。

推送鏡像
  1. 打標籤(tag)
docker tag be236e996983 jclian91/dockertest:hello_world_test_19.01.31.1100

鏡像ID可經過docker images查看。

  1. 登陸dockerhub帳號
docker login

再輸入本身的帳號、密碼便可。

  1. 推送(push)鏡像
docker push jclian91/dockertest:hello_world_test_19.01.31.1100

全部命令的界面以下:

docker推送鏡像

此時,咱們去dockerhub的dockertest倉庫中去查看,發現已經上傳一個鏡像了,以下:

docktest倉庫多了一個鏡像

運行鏡像

  1. 爲了運行新上傳的鏡像,咱們先刪除本地打包的鏡像:
$ 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
  1. 拉取(pull)新上傳的鏡像
docker pull jclian91/dockertest:hello_world_test_19.01.31.1100
  1. 運行(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), 歡迎你們關注哦~~

參考文獻:

  1. Docker —— 從入門到實踐: https://yeasy.gitbooks.io/doc...
  2. Docker基本介紹和操做:http://blog.51cto.com/wutengf...
  3. Docker 教程: http://www.runoob.com/docker/...
  4. 《第一本Docker書 修訂版》 詹姆斯·特恩布爾 人民郵電出版社
相關文章
相關標籤/搜索