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運行正常.
參考文章:
文章列表