当前位置:   article > 正文

基于boot2docker部署Docker环境

restarted machines may have new ip addresses. you may need to re-run the `do

Docker轻量级的特性使得我们可以快速打包开发环境:一处编译,到处使用。我们可以在第一次编译好需要的开发环境,然后把镜像导出打包,只有有docker环境,便可以快速还原原来的开发环境。

很常用的一个场景:换了电脑后,每次都需要重新安装PHP开发环境,浪费了很多时间。使用Docker,只需要预先编译一次,后续无需再次编译,就算从Windows换到了Mac、Linux,我们编译好的环境依然可以使用:只需要导入或者pull下来就行。

在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)。(推荐,可玩性较高)

常规安装docker方法:

  1. curl -fsSL https://get.docker.com/ | sh
  2. # daocloud.io 国内镜像
  3. curl -sSL https://get.daocloud.io/docker | sh

该方法适用于 Ubuntu,Debian,Centos 等大部分主流 Linux 发行版。

准备工作

1、下载并安装VirtualBox

2、下载boot2docker.iso
https://github.com/boot2docker/boot2docker/releases/download/v18.01.0-ce/boot2docker.iso
建议使用迅雷下载。
为方便下载,网盘也存了一份:链接: https://pan.baidu.com/s/1i6QGIg9 密码: fsmb

3、下载docker-machine

Mac直接使用brew下载:

brew install docker-machine 

或者:

  1. curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \
  2. chmod +x /usr/local/bin/docker-machine

Windows 打开 GitBash:

  1. if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
  2. curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
  3. chmod +x "$HOME/bin/docker-machine.exe"

基于boot2docker.iso初始化环境

打开Bash命令行:

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

其中--virtualbox-boot2docker-url手动指定了boot2docker.iso位置。如果不指定该参数,则会从网络直接下载,会非常慢。

如果没有出错,就可以进入这个虚拟机里面的Docker Linux里了:

  1. $ docker-machine start default
  2. Starting "default"...
  3. (default) Check network to re-create if needed...
  4. (default) Waiting for an IP...
  5. Machine "default" was started.
  6. Waiting for SSH to be available...
  7. Detecting the provisioner...
  8. Waiting for SSH to be available...
  9. Detecting the provisioner...
  10. Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
  11. $ docker-machine ls
  12. NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
  13. 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
  14. $ docker-machine ssh default
  15. ## .
  16. ## ## ## ==
  17. ## ## ## ## ## ===
  18. /"""""""""""""""""\___/ ===
  19. ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
  20. \______ o __/
  21. \ \ __/
  22. \____\_______/
  23. _ _ ____ _ _
  24. | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
  25. | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
  26. | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
  27. |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
  28. Boot2Docker version 18.01.0-ce, build HEAD : 0bb7bbd - Thu Jan 11 16:32:39 UTC 2018
  29. Docker version 18.01.0-ce, build 03596f5
  30. docker@default:~$

docker-machine命令:

  1. Commands:
  2. active Print which machine is active
  3. config Print the connection config for machine
  4. create Create a machine
  5. env Display the commands to set up the environment for the Docker client
  6. inspect Inspect information about a machine
  7. ip Get the IP address of a machine
  8. kill Kill a machine
  9. ls List machines
  10. provision Re-provision existing machines
  11. regenerate-certs Regenerate TLS Certificates for a machine
  12. restart Restart a machine
  13. rm Remove a machine
  14. ssh Log into or run a command on a machine with SSH.
  15. scp Copy files between machines
  16. start Start a machine
  17. status Get the status of a machine
  18. stop Stop a machine
  19. upgrade Upgrade a machine to the latest version of Docker
  20. url Get the URL of a machine
  21. version Show the Docker Machine version or a machine docker version
  22. help Shows a list of commands or help for one command

建议打开VirtualBox给default配置共享目录:
663847-20180313210032245-2060324967.png

默认会配置c/Users。配置共享目录前需要先:

docker-machine stop default

配置选项:自动挂载、固定分配。

如果需要手动挂载目录:

mount -t vboxsf work /work

/www是容器内挂载点。

配置好后:

docker-machine start default

以后重启电脑后只需运行上面一句即可。

拓展

在虚拟机机中安装docker-compose

方法

  1. 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
  2. chmod 777 -R /usr/local/bin/docker-compose
  3. 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),每次都得:

  1. eval $(docker-machine env)
  2. docker exec -it yphp /bin/bash

挺繁琐的。可以借助shell搞定:
.bashrc里加上:

  1. eval $(docker-machine env);
  2. alias yphp="winpty docker exec -it yphp bash"

以后直接输入yphp就可以进入容器了。

xshell连接docker

默认的git-bash连接docker,vim实在是太难用了。可以使用xhsell连接docker。默认用户名是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中,一劳永逸):

  1. # 进入容器
  2. docker exec -it your_container_name /bin/bash
  3. # 追加配置
  4. echo -e "export COLUMNS=\`tput cols\` \nexport LINES=\`tput lines\`" >> ~/.bashrc
  5. # 退出容器,以后再进入容器,就正常了
  6. exit
  7. # 再次进入即可看到容器宽高正确
  8. docker exec -it your_container_name /bin/bash

参考资料

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

转载于:https://www.cnblogs.com/52fhy/p/8413029.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/827351
推荐阅读
相关标签
  

闽ICP备14008679号