基於boot2docker部署Docker環境

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

爲何使用 boot2docker

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

使用boot2docker安裝Docker

準備工做

一、下載並安裝VirtualBox
https://www.virtualbox.org/wiki/Downloads
git

二、下載 最新版boot2docker.iso
https://github.com/boot2docker/boot2docker/releases
github

從上面的截圖能夠看出,boot2docker.iso是由好幾個組件組成的:Docker + Tiny Core Linux + VirtualBox Guest Additions等。docker

三、下載 docker-machine (可選,後面會講如何直接用VirtualBox安裝docker)shell

Mac 直接使用 brew 下載:vim

brew install docker-machine

或者:windows

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:bash

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"

使用docker-machine搭建docker

docker-machine 實際上是輔助咱們一鍵在virtualbox 裏建立好了docker。網絡

打開Bash命令行:

$ docker-machine create --driver virtualbox   default

Running pre-create checks...
(default) Default Boot2Docker ISO is out-of-date, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v18.09.7
(default) Downloading C:\Users\YJC\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.09.7/boot2docker.iso...

若是下載不來,使用其它工具先下載好,而後放到C:\Users\YJC\.docker\machine\cache覆蓋,再執行建立語句就ok了。路徑自行修改成本機的路徑。

提示:--virtualbox-boot2docker-url能夠手動指定boot2docker.iso位置。

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

windows路徑:

docker-machine create --driver virtualbox  --virtualbox-boot2docker-url=file://C:\\Users\\YJC\\.docker\\machine\\cache\\boot2docker.iso  default

若是提示:This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory,能夠:
a. 在管理員模式下的命令提示符中輸入:bcdedit /set hypervisorlaunchtype Auto,而後重啓電腦。
b. 若是上述無效,能夠加參數 --virtualbox-no-vtx-check 忽略檢查。

若是沒有出錯,就能夠進入這個虛擬機裏面的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

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

直接使用VirtualBox搭建docker

若是已經下載了boot2docker.iso,其實能夠不用docker-machinedocker-machine啓動,有時候會遇到一些奇怪的問題,還不如直接使用VirtualBox搭建docker,這樣還能夠自定義,修改磁盤大小、網絡驅動。

一、新建虛擬機,名稱docker
二、虛擬機類型:Linux, Linux 2.6/3.x/4.x(64bit)
三、內存大小1024M
四、虛擬硬盤:如今建立虛擬硬盤,文件類型默認,動態分配,大小看狀況,10G就夠了。
五、點擊建立。
六、設置網絡:網卡1 鏈接方式:網絡地址轉換(NAT),高級裏端口轉發配上,用於命令行ssh或者xshell鏈接用。
名稱:ssh,協議:TCP,主機IP:127.0.0.1,主機端口:9634,子系統端口:22。
七、設置共享文件夾,共享文件夾路徑是主機目錄,例如:D:\work,共享文件夾名稱:work,自動掛載;掛載點是虛擬機內路徑,例如:/work,固定分配。
八、啓動虛擬機便可。
九、若是使用ssh鏈接,命令:ssh -p 9634 docker@127.0.0.1,密碼是 tcuser

後續啓動虛擬機能夠選擇無界面啓動,這樣專一命令行操做。

拓展

在虛擬機機中安裝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就能夠進入容器了。

xshell鏈接docker

默認的git-bash鏈接docker,vim實在是太難用了。可使用xhsell鏈接docker。IP是127.0.0.1,端口能夠在virtual Box裏看到:

默認用戶名是docker,密碼tcuser。
參考:https://blog.csdn.net/ltyzsd/article/details/79041616

解決docker終端寬度、高度顯示不正確

方法一(操做簡單,可是每次都要輸入環境變量):

docker exec -it --env COLUMNS=`tput cols` --env LINES=`tput lines` your_container_name /bin/bash

方法二(將環境變量追加到容器內的.bashrc中,一勞永逸):

# 進入容器
docker exec -it your_container_name /bin/bash
# 追加配置
echo -e "export COLUMNS=\`tput cols\` \nexport LINES=\`tput lines\`" >> ~/.bashrc
# 退出容器,之後再進入容器,就正常了
exit
# 再次進入便可看到容器寬高正確
docker exec -it your_container_name /bin/bash

Mac換機後docker報錯

VBoxManage: error: Failed to create the host-only adapter - Stack Overflow
參考:
https://stackoverflow.com/questions/21069908/vboxmanage-error-failed-to-create-the-host-only-adapter

參考資料

一、Docker學習筆記 - 飛鴻影~ - 博客園
http://www.cnblogs.com/52fhy/p/5638571.html
二、https://docs.docker.com/machine/install-machine/#install-machine-directly
三、解決docker終端寬度、高度顯示不正確 - 蘑菇獵手的專欄 - CSDN博客
https://blog.csdn.net/DongGeGe214/article/details/86674741
四、使用Docker快速搭建PHP開發環境 - 飛鴻影 - 博客園
http://www.javashuo.com/article/p-qzydussy-hz.html

相關文章
相關標籤/搜索