文章出處

docker是啥就不多講了,簡言之就是更輕量、更牛叉的新一代虛擬機技術。下面是安裝步驟:

一、mac/windows平臺的安裝

docker是在linux內核基礎上發展而來的,無法直接運行在mac/windows上,需要借助docker-machine工具,先在mac/windows上建一個linux的虛擬機,然后才能繼續玩下去。默認內置的虛擬機引擎是Oracle的免費軟件VirtualBox,可支持vmware fusion之類的商業軟件。

1.1 下載docker toolbox

下載地址:http://www.docker.com/docker-toolbox ,toolbox已集成了docker-machine,docker client,virtualbox之插件,強烈建議在mac/windows上學習docker的同學用這種方式安裝docker(注:雖然mac上也可以通過brew install 方式安裝,但是沒有圖形界面,學習起來不方便)。

安裝過程很簡單,一路Next就可以了,唯一要注意的是最后一個界面:

docker toolbox提供了二種運行方式,終端命令行及圖形界面,建議初學者選擇圖形界面,以降低學習難度。

進入后,會要求先創建一個docker hub的賬號,注冊賬號完成郵箱驗證后,就能進入了,docker hub上提供了大量的docker鏡像文件(可以理解各種虛擬機的模板,不過建議翻~*墻,否則速度奇慢,甚至打不開),基本上可以滿足各種要求,比如:需要一個持續集成的虛擬機,可以直接使用jenkins鏡像,需要一個mysql,可以直接使用mysql鏡像...

天朝的程序員估計是全世界幸福感最差的程序員,所有外國的好東西,要么不能用,要么龜速,docker hub下載巨慢,第1次接觸慢慢等吧,后面會介紹如何使用國內daocloud的代理進行加速

注:toolbox并沒有提供卸載工具,如果出于某種原因需要卸載,可利用https://github.com/docker/toolbox/blob/master/osx/uninstall.sh 這個腳本完成,腳本內容如下:

#!/bin/bash

# Uninstall Script

if [ "${USER}" != "root" ]; then
	echo "$0 must be run as root!"
	exit 2
fi

while true; do
  read -p "Remove all Docker Machine VMs? (Y/N): " yn
  case $yn in
    [Yy]* ) docker-machine rm -f $(docker-machine ls -q); break;;
    [Nn]* ) break;;
    * ) echo "Please answer yes or no."; exit 1;;
  esac
done

echo "Removing Applications..."
rm -rf /Applications/Docker

echo "Removing docker binaries..."
rm -f /usr/local/bin/docker
rm -f /usr/local/bin/docker-machine
rm -r /usr/local/bin/docker-machine-driver*
rm -f /usr/local/bin/docker-compose

echo "Removing boot2docker.iso"
rm -rf /usr/local/share/boot2docker

echo "All Done!"

上面的腳本并沒有刪除virtualbox,如果連virtualbox也要卸載,自行到Application面板里,把virtualbox拖到垃圾箱里即可。  

 

1.2 下載鏡像

先選一個小點兒的鏡像感受下,比如:用kitematic/hello-world-nginx測試下nginx

點擊New,搜索nginx就能找到,其文檔地址為:https://hub.docker.com/r/kitematic/hello-world-nginx/,通過GUI界面下載的過程,等效于下面的命令:

docker pull kitematic/hello-world-nginx

 

1.3 一些常規操作

下圖是KI的GUI界面,打紅圈的地方可以直接操作,工具欄里的Start點擊一下,把nginx容器運行起來

點擊上圖中"瀏覽nginx首頁"的按鈕,就可以直接在瀏覽器里看到nginx首頁了,很方便吧!工具欄里的STOP/RESTART這些按鈕看名字就知道用途了,不再啰嗦。

可以有同學注意到了,瀏覽器里的地址類似:http://192.168.99.100:32774,如果想知道為啥是這個IP及端口,可以看下Ports頁,如下圖:

上圖的意思是,將docker容器中的80端口,映射到虛擬機的32774端口,那么問題來了,192.168.99.100又是哪里來的?

 

點擊左下角的DOCKER CLI,就能進入docker終端,然后運行:

docker-machine ls 

會顯示出當前創建的虛擬機(還記得本文最開頭說的,mac上不能直接運行docker,必須先創建一個linux虛擬機吧),輸出的default就是虛擬機的名字,然后再運行:

docker-machine ip default

就能看到virtual box給虛擬機default分配的IP.  繼續,點擊下圖中的Exec,將進入nginx docker容器的bash命令行模式:

輸入nginx -V查看配置文件的位置:

可以看出配置文件為/etc/nginx/nginx.conf,用cat命令查看一下:

從上圖看,網站的根目錄為/website_files,回到KI中,點擊Volumns標簽

可以看到實際是上把mac本機的~/Documents/Kitematic/hello-world-nginx/website_files 映射到docker容器實例中的/website_files,大家可以嘗試把mac本機~/Documents/Kitematic/hello-world-nginx/website_files 中的index.html修改下,再刷新下瀏覽器中nginx頁面,應該馬上就能看到效果了。

 

1.4 docker 命令行的秘密

如果直接在mac本機打開一個終端,然后輸入docker ps之類的命令,會提示

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

但是從KI界面點擊DOCKER CLI進入終端后,再輸入docker ps,能正常顯示正在運行的容器信息:

原因在于:通過KI進入終端后,會先執行

bash -c "clear && DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default DOCKER_TLS_VERIFY=1 /bin/zsh"

大家在docker CLI終端里,按一下向上的箭頭就能發現這個秘密了,把這一行長長的命令換行整理一下,

bash -c "
clear && 
DOCKER_HOST=tcp://192.168.99.100:2376 
DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default 
DOCKER_TLS_VERIFY=1 
/bin/zsh"

并沒有什么特別之處,就是定義了幾個bash變量而已,上面這一段不用死記,可以簡化成:

docker-machine start default #啟動虛擬機default,如果vm未啟動的話,先執行這一行
docker-machine env default #獲取default的環境變量

第二行執行完以后,會輸出:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/yjmyzz/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)  

注意最后一行,按提示復制 eval $(docker-machine env default),然后執行一下,bash終端就有docker的上下文環境,然后執行docker ps之類的,就不會報錯了。  

類似的,點擊頂部工具欄上的EXEC,實際上等效于

bash -c "clear && DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default DOCKER_TLS_VERIFY=1 docker exec -it hello-world-nginx sh"

換行整理一下: 

bash -c "
clear && 
DOCKER_HOST=tcp://192.168.99.100:2376 
DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default 
DOCKER_TLS_VERIFY=1 
docker exec -it hello-world-nginx sh"

只是多了最后一行,所以上面這一段相當于:

eval $(docker-machine env default)
docker exec -it hello-world-nginx sh

 

二、linux平臺的安裝(以centos為例)  

注意:centos要求7以上版本,低版本的內核docker不支持。

curl -sSL https://get.daocloud.io/docker | sh 
sudo chkconfig docker on 
sudo systemctl start docker

3行代碼就搞定了,其中第1行,是從國內daocloud公司下載的,如果你想從官網下載,可以改成 sudo yum install docker  或 curl -sSL https://get.docker.com/ | sh, 安裝完成后,執行:

sudo systemctl status docker

查看docker deamon狀態,如果有active(running)字樣輸出,表示docker運行正常.

 

參考文章:

https://docs.docker.com/engine/installation/centos/


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()