[轉]基於boot2docker部署Docker環境

本文轉自:http://www.javashuo.com/article/p-uxmifybs-hx.htmljavascript

Docker輕量級的特性使得咱們能夠快速打包開發環境:一處編譯,處處使用。咱們能夠在第一次編譯好須要的開發環境,而後把鏡像導出打包,只有有docker環境,即可以快速還原原來的開發環境。php

很經常使用的一個場景:換了電腦後,每次都須要從新安裝PHP開發環境,浪費了不少時間。使用Docker,只須要預先編譯一次,後續無需再次編譯,就算從Windows換到了Mac、Linux,咱們編譯好的環境依然可使用:只須要導入或者pull下來就行。html

在Ubuntu等環境,咱們能夠一鍵安裝Docker(服務端、客戶端),可是在Mac、Windows環境卻沒法直接安裝Docker服務端。這種狀況下,咱們有3種選擇:
一、在虛擬機安裝CentOS或者Ubuntu:比較費時。
二、使用 docker-for-mac 或者 docker-for-windows(僅Windows10專業版支持)客戶端,這種體積會比較大,通常300M左右。
三、使用 boot2docker,配合docker-machine客戶端,輕鬆部署Docker環境。須要提早安裝VirtualBox(約90M)。(推薦,可玩性較高)java

常規安裝docker方法:nginx

curl -fsSL https://get.docker.com/ | sh
 # daocloud.io 國內鏡像 curl -sSL https://get.daocloud.io/docker | sh

該方法適用於 Ubuntu,Debian,Centos 等大部分主流 Linux 發行版。git

準備工做

一、下載並安裝VirtualBoxgithub

二、下載boot2docker.iso
https://github.com/boot2docker/boot2docker/releases/download/v18.01.0-ce/boot2docker.iso
建議使用迅雷下載。
爲方便下載,網盤也存了一份:連接: https://pan.baidu.com/s/1i6QGIg9 密碼: fsmbsql

三、下載docker-machinedocker

Mac直接使用brew下載:shell

brew install docker-machine 

或者:

curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \ chmod +x /usr/local/bin/docker-machine

Windows 打開 GitBash:

if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \ curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \ chmod +x "$HOME/bin/docker-machine.exe"

基於boot2docker.iso初始化環境

打開Bash命令行:

docker-machine create --driver virtualbox --virtualbox-boot2docker-url=/Users/yjc/.docker/machine/cache/boot2docker.iso default

其中--virtualbox-boot2docker-url手動指定了boot2docker.iso位置。若是不指定該參數,則會從網絡直接下載,會很是慢。

若是沒有出錯,就能夠進入這個虛擬機裏面的Docker Linux裏了:

$ docker-machine start default Starting "default"... (default) Check network to re-create if needed... (default) Waiting for an IP... Machine "default" was started. Waiting for SSH to be available... Detecting the provisioner... Waiting for SSH to be available... Detecting the provisioner... Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command. $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - virtualbox Running tcp://192.168.99.101:2376 Unknown Unable to query docker version: Get https://192.168.99.101:2376/v1.15/version: x509: certificate is valid for 192.168.99.100, not 192.168.99.101 $ docker-machine ssh default ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 18.01.0-ce, build HEAD : 0bb7bbd - Thu Jan 11 16:32:39 UTC 2018 Docker version 18.01.0-ce, build 03596f5 docker@default:~$

docker-machine命令:

Commands:
  active                Print which machine is active
  config                Print the connection config for machine
  create Create a machine env Display the commands to set up the environment for the Docker client inspect Inspect information about a machine ip Get the IP address of a machine kill Kill a machine ls List machines provision Re-provision existing machines regenerate-certs Regenerate TLS Certificates for a machine restart Restart a machine rm Remove a machine ssh Log into or run a command on a machine with SSH. scp Copy files between machines start Start a machine status Get the status of a machine stop Stop a machine upgrade Upgrade a machine to the latest version of Docker url Get the URL of a machine version Show the Docker Machine version or a machine docker version help Shows a list of commands or help for one command

建議打開VirtualBox給default配置共享目錄:

默認會配置c/Users。配置共享目錄前須要先:

docker-machine stop default

配置選項:自動掛載、固定分配。

若是須要手動掛載目錄:

mount -t vboxsf work /work

/www是容器內掛載點。

配置好後:

docker-machine start default

之後重啓電腦後只需運行上面一句便可。

拓展

在虛擬機機中安裝docker-compose

方法

sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose -k chmod 777 -R /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

重點
1.最後的-k 是免認證的請求方式,若是不加-k,會報SLL認證失敗致使下載失敗。
2.網絡問題,常常超時,多試幾回。

宿主機直接使用docker

每次都要docker-machine ssh 到虛擬機裏面仍是挺麻煩的,其實能夠直接在宿主機操做docker。首先須要安裝docker客戶端:

brew install docker

而後:

eval $(docker-machine env)

假設已經啓動了docker,想進入容器(假設是yphp),每次都得:

eval $(docker-machine env) docker exec -it yphp /bin/bash

挺繁瑣的。能夠藉助shell搞定:
.bashrc里加上:

eval $(docker-machine env); alias yphp="winpty docker exec -it yphp bash"

之後直接輸入yphp就能夠進入容器了。

參考資料

一、Docker學習筆記 - 飛鴻影~ - 博客園
http://www.cnblogs.com/52fhy/p/5638571.html
二、https://docs.docker.com/machine/install-machine/#install-machine-directly

 

 

版權申明:沒有標明轉載或特殊申明均爲做者原創。本文采用如下協議進行受權,自由轉載 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,轉載請註明做者及出處。

做者:飛鴻影~

出處:http://52fhy.cnblogs.com/

相關文章
相關標籤/搜索