Docker
輕量級的特性使得咱們能夠快速打包開發環境:一處編譯,處處使用。咱們能夠在第一次編譯好須要的開發環境,而後把鏡像導出打包,只有有docker
環境,即可以快速還原原來的開發環境。php
boot2docker
在 Ubuntu
等環境,咱們能夠一鍵安裝Docker
(服務端、客戶端),可是在 Mac
、Windows
環境卻沒法直接安裝 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-machine
。docker-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-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
就能夠進入容器了。
默認的git-bash鏈接docker,vim實在是太難用了。可使用xhsell鏈接docker。IP是127.0.0.1,端口能夠在virtual Box裏看到:
默認用戶名是docker,密碼tcuser。
參考:https://blog.csdn.net/ltyzsd/article/details/79041616
方法一(操做簡單,可是每次都要輸入環境變量):
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
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