Docker
輕量級的特性使得我們可以快速打包開發環境:一處編譯,到處使用。我們可以在第一次編譯好需要的開發環境,然后把鏡像導出打包,只有有docker
環境,便可以快速還原原來的開發環境。
為什么使用 boot2docker
在 Ubuntu
等環境,我們可以一鍵安裝Docker
(服務端、客戶端),但是在 Mac
、Windows
環境卻無法直接安裝 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-machine
。docker-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