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