docker學習1|使用docker輸出hello world

中興開發者社群發表於2017-12-12

點選上方“中興開發者社群”,關注我們

每天讀一篇一線開發者原創好文640?wx_fmt=png&wxfrom=5&wx_lazy=1

▎作者簡介

作者朱磊是開源軟體愛好者,致力於web應用部署、運維領域解決方案的研究。將web應用部署在Docker上能夠極大的簡化部署、方便維護,文章將以初學者的角度從輸出hello world開始,一步步的揭開使用Docker部署web應用的神祕面紗。


1.什麼是docker

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。


docker使用場景

docker有很多用途,目前對於我來說,可以預期的場景為:

1.提高開發效率:一般的開發工作中,開發環境的搭建是件頭疼的事情,每個開發人員都得重複搭一套一致的環境,使用docker後,可以搭建一次後存為映象,其他團隊成員就可以直接使用了。

2.快速部署:在虛擬機器之前,引入新的硬體資源需要消耗幾天的時間。Docker的虛擬化技術將這個時間降到了幾分鐘,Docker只是建立一個容器程式而無需啟動作業系統,這個過程只需要秒級的時間。

更多用途介紹,見參考資料5:Docker 的應用場景在哪裡?


2. docker安裝與啟動

一般的Linux發行版本中,已經預裝了docker,輸入如下命令確認是否已經預裝docker

  1. docker --version

  2. #如果已經存在會輸出當前docker版本

  3. Docker version 1.10.3, build 694b432-unsupported

可以使用yum升級到最新版本

  1. yum update docker

如果當前系統中不存在docker,可以使用yum安裝

  1. yum install docker

docker的啟動停止命令如下:

  1. #啟動

  2. service docker start

  3. #停止

  4. service docker stop

  5. #重啟

  6. service docker restart

3. 搜尋與下載映象

3.1 查詢可用映象

  1. #例如查詢centos的映象

  2. docker search centos

  3. #結果如下組織:

  4. INDEX  NAME  DESCRIPTION  STARS OFFICIAL  AUTOMATED

  5. #STARS:映象的星數,一般選擇星數高的下載

  6. #OFFICIAL:是否是官方的映象,如果有一般選擇官方映象

3.2 下載可用映象

  1. #下載centos的官方映象

  2. docker pull centos

因docker預設使用官方映象源,速度很慢,所以我們一般可以選擇更換映象源。


3.3 配置國內映象加速

登入阿里雲映象服務,https://cr.console.aliyun.com/?spm=5176.100239.blogcont29941.12.eJkJlD#/accelerator,獲取自己的加速器地址(專用映象加速地址,需要自己獲取)

按照頁面幫助文件,修改配置檔案/etc/docker/daemon.json

  1. sudo mkdir -p /etc/docker

  2. sudo tee /etc/docker/daemon.json <<-'EOF'

  3. {

  4.  "registry-mirrors": ["https://abcdefg.mirror.aliyuncs.com"]

  5. }

  6. EOF

  7. sudo systemctl daemon-reload

  8. sudo systemctl restart docker

配置完成後,重新啟動docker發現,docker無法啟動。

  1. service docker restart

  2. Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

依據參考資料1,需要centos/redhat上配置其他檔案。

  1. #刪除錯誤的配置檔案

  2. rm /etc/docker/daemon.json

  3. #重新配置

  4. vim /etc/sysconfig/docker

  5. #OPTIONS中增加registry-mirror屬性

  6. OPTIONS='--selinux-enabled --log-driver=journald --registry-mirror=https://abcdefg.mirror.aliyuncs.com'

  7. DOCKER_CERT_PATH=/etc/docker

配置完成後,重新啟動docker,檢視啟動引數。

  1. #重啟

  2. service docker restart

  3. #檢視啟動資訊

  4. ps aux | grep docker

  5. /usr/bin/dockerd-current --log-driver=journald --registry-mirror=https://abcdefg.mirror.aliyuncs.com

再次使用docker pull centos 下載centos映象,可以明顯看到速度有很大的提升。


3.4 檢視當前已存在的映象

  1. docker images

  2. #結果如下:

  3. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

  4. docker.io/centos    latest              3fa822599e10        8 days ago          203.5 MB

4. 執行centos映象輸出hello world

對於程式設計師來說,入門一種技術最關鍵的一步來了,使用docker run輸出hello world。

  1. docker run centos echo "hello word"

  2. hello word

可以看到,docker run有兩個引數,一個是映象名,一個是要在映象中執行的命令。當echo命令執行結束後,容器也會隨之停止,如果需要一直開啟容器的控制檯,可以輸入如下命令:

  1. docker run -it centos /bin/bash

  2. [root@1a3d1376e367 /]#

  3. #可以看到,終端上已經由centos容器控制檯接管,此時直接echo輸出

  4. [root@1a3d1376e367 /]# echo "hello word"

  5. hello word

  6. [root@1a3d1376e367 /]#

  7. #exit退出容器

  8. [root@1a3d1376e367 /]# exit

  9. exit

  10. [root@localhost opt]#

參考資料

1.在阿里雲上使用 Docker 並配置阿里雲映象加速器,結果遇到 daemon.json 導致 docker daemon 無法啟動的問題,https://pagespeed.v2ex.com/t/326229

2.docker: Error response from daemon: Container command could not be invoked..,http://blog.csdn.net/qq_29352959/article/details/54847794

3.Docker 映象加速器,https://yq.aliyun.com/articles/29941

4.Docker,https://baike.baidu.com/item/Docker/13344470?fr=aladdin

5.Docker 的應用場景在哪裡?,https://www.zhihu.com/question/22969309

6.Docker入門教程,http://www.docker.org.cn/book/docker/what-is-docker-16.html

640?wx_fmt=jpeg

相關文章