文档章节

在windows环境下使用Virtualbox虚拟Debian系统来运行Docker

zgldh
 zgldh
发布于 2018/10/21 21:57
字数 797
阅读 57
收藏 2

标题绕口。 我之前一直使用 Virtualbox 和 homestead 来运行我的 PHP 开发环境。最近决心开始尝试 DevOps,使得开发、部署容器化,来化解人为操作失误和环境不兼容等问题造成的各种损失。就打算开始用比较成熟的 Docker 来做。

但众所周知在 windows 环境下,Docker 和 Virtualbox 有冲突,一山不容二虎(https://segmentfault.com/q/1010000009174921?_ea=1879415

于是决定用 Virtualbox 虚拟个 Debian 命令行系统,然后在 Debian 里面跑 Docker 这样大家就都没意见了。

整体思路:

  1. 安装 Virtualbox

  2. 新建个虚拟机,安装 Debian。

    这里推荐虚拟机开两个网卡,一个 Nat 模式,一个 HostOnly 模式。这样方便 windows 主机用 SSH 工具登入虚拟机进行管理。再把 HostOnly 那个网卡配一个静态 IP , windows 主机的 hosts 也加一个域名比如 dockerhost 指向它就更方便了。

  3. 在 Debian 里面装 Docker

  4. 在 Virtualbox,配置 Debian 虚拟机的共享目录。我选择的是 E:\dockerHostShare, 你选择你自己的目录。记得把 Auto-mount 和 Make Permanent 打上勾

  5. 在 Debian 里面装 VBoxGuestAdditions 服务

    官网流程: https://virtualboxes.org/doc/installing-guest-additions-on-debian/

    参考 BSalita 的回答: https://serverfault.com/questions/674974/how-to-mount-a-virtualbox-shared-folder

    要注意的是你可能需要把当前用户添加入 vboxsf 用户组(需要重启)。如果你是 root 就无所谓了。为了方便你可以 ln -s /media/sf_dockerHostShare ~/dockerHostShare 就不用每次都到 media 里面找了。

  6. 在 windows 主机的 E:\dockerHostShare 目录下可以添加你任何项目目录,项目目录里添加 Dockerfile, 然后你就可以在 Debian 虚拟机里执行这些 Dockerfile 了。

追加

以上安装方法可能导致 docker 跑的 Nginx 总是 404,原因是共享目录的用户组是 root:vboxsf , 通常的 nginx 镜像里是没有 vboxsf 用户组的, 且大部分的 docker 镜像里面的程序都是用 gid 为 1000 的用户/用户组执行的。

所以此时需要你手工修改 Debian 里的 /etc/group 将 vboxsf 的 gid 改为 1000, 把另一个 gid 是 1000 的改成别的数(下称 default_gid)。别忘了也要将 /etc/passwd 里面原来是 1000 的 gid 调整为 default_gid,否则默认用户会混乱。

然后到 VirtualBox 控制面板,删掉原来的共享目录,再重新添加共享目录。回到 Debian 查看这个目录的权限 ls -lan 就会发现用户/用户组变成了 0 1000 (其实还是 root vboxsf, 只是 gid 改了)

主要思路就是这样。如果遇到哪些镜像使用的用户/用户组和 0:1000 不匹配,请自行在他的 Dockerfile 里添加 RUN addgroup -gid 1000 vboxsf \ && adduser 镜像里的执行用户名 vboxsf 这样就能让镜像里的执行用户有权限访问共享目录了。

© 著作权归作者所有

共有 人打赏支持
zgldh
粉丝 97
博文 36
码字总数 47009
作品 2
高级程序员
私信 提问
vagrant+virtualbox使用小记

virtualbox是类似vmware workstation的虚拟机软件,而且是开源的,支持多平台,在win10上也能顺畅运行。win10上安装vagrant能在终端xshell上像linux一样命令行操作,也便于开发环境的切换,很...

hiwill
2018/09/16
0
0
Vagrant 2.0 正式发布,支持更多的虚拟化平台

Vagrant 2.0 已正式发布,Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境。 Vagrant 2.0 支持在 VirtualBox, VMware, Hyper-V, Docker, AWS, GCP 等平台上配置开发环境,它可...

局长
2017/10/07
1K
8
Vagrant 2.2.1 发布,开发者友好的环境构建工具

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境,能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境。。简单地说,Vagrant让我们可以通过代码的方式快速地、可重...

专写垃圾代码
2018/11/16
1K
2
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolboxins......

karma123
2018/12/19
0
0
『中级篇』如何在mac上通过vagrant安装虚拟机(七)

大部分老铁,都是用的mac或者windows,并没有一台linux的主机,如果想在linux上安装docker的话,linux的机器可以通过虚拟化来实现。 一般虚拟化通过的软件是VirtualBox 或者 VMware Worksta...

IT人故事
2018/07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 舔狗是没有好下场的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听什么# #今天听这个# 分享 Nirvana 的歌曲《Smells Like Teen Spi...》 《Smells Like Teen Spi...》- Nirvana 手机党少...

小小编辑
41分钟前
9
3
Linux Wireshark普通用户启动使用方案

当系统安装好Wireshark后请正常启动是否可以进行正常使用,如果不行请参考下列指导 向系统添加一个用户组 sudo groupadd wireshark //如提示此组存在可跳过 将指定用户添加到这个组中 sudo...

CHONGCHEN
今天
2
0
CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
2
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
5
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部