基於boot2docker部署Docker環境


Docker輕量級的特性使得我們可以快速打包開發環境:一處編譯,到處使用。我們可以在第一次編譯好需要的開發環境,然后把鏡像導出打包,只有有docker環境,便可以快速還原原來的開發環境。

為什么使用 boot2docker

Ubuntu 等環境,我們可以一鍵安裝Docker(服務端、客戶端),但是在 MacWindows 環境卻無法直接安裝 Docker 服務端。這種情況下,我們有3種選擇:
1、在虛擬機安裝 CentOS 或者 Ubuntu:比較費時。
2、使用 docker-for-mac 或者 docker-for-windows (僅Windows10專業版支持)客戶端,這種體積會比較大,一般300M左右。可配置性不高,出了問題不好排查。
3、使用 boot2docker,配合 docker-machine 客戶端,輕松部署Docker環境。需要提前安裝VirtualBox(約90M)。(推薦,可玩性較高)

使用boot2docker安裝Docker

准備工作

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

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

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

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

Mac 直接使用 brew 下載:

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"

使用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,這樣還可以自定義,修改磁盤大小、網絡驅動。

1、新建虛擬機,名稱docker
2、虛擬機類型:Linux, Linux 2.6/3.x/4.x(64bit)
3、內存大小1024M
4、虛擬硬盤:現在創建虛擬硬盤,文件類型默認,動態分配,大小看情況,10G就夠了。
5、點擊創建。
6、設置網絡:網卡1 連接方式:網絡地址轉換(NAT),高級里端口轉發配上,用於命令行ssh或者xshell連接用。
名稱:ssh,協議:TCP,主機IP:127.0.0.1,主機端口:9634,子系統端口:22。
7、設置共享文件夾,共享文件夾路徑是主機目錄,例如:D:\work,共享文件夾名稱:work,自動掛載;掛載點是虛擬機內路徑,例如:/work,固定分配。
8、啟動虛擬機即可。
9、如果使用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

參考資料

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM