在FreeBSD上使用Docker_weixin_34384681的博客-CSDN博客


本站和网页 https://blog.csdn.net/weixin_34384681/article/details/88118310 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

在FreeBSD上使用Docker_weixin_34384681的博客-CSDN博客
在FreeBSD上使用Docker
weixin_34384681
于 2018-10-09 13:49:57 发布
4479
收藏
文章标签:
运维
操作系统
shell
原文链接:https://juejin.im/post/5bbcb1c9e51d450e7042b7a7
版权
需求
FreeBSD是个好东西,因为有ZFS。Docker也是个好东西,因为很爽。
然而之前Docker只支持Linux,所以在其它平台上都需要搞个Linux虚拟机才能用,麻烦得很。
当然现在也是一样,只是官方出了一个docker-machine可以更方便地管理虚拟机里的docker。基本用法可以参考这篇《Docker on FreeBSD》
不过为了折腾这个东西,我把家里的服务器搞崩溃好多次,最后甚至不得不重装一遍……前前后后折腾了快一个月。
现在把这个血泪教训总结成本文。
准备环境
docker-machine依赖虚拟机环境,这里以最常用的VirtualBox为例。
我的服务器上本来就跑着VBox,所以当时就直接拿来用了,结果可耻滴失败了。
首先是需要系统版本:FreeBSD 11以上才提供了docker-machine,所以必须先把我的10升级一下。升级方法以前说过(见《FreeBSD升级失败的处理》),这里从略。
升级完成之后还是不能用,创建新machine的时候各种报错,比如:
Error creating machine: Error in driver during machine creation: Unable to start the VM: /usr/local/bin/VBoxManage startvm dockerhost --type headless failed:
VBoxManage: error: The VMMR0.r0 module version does not match VBoxVMM.dll/so/dylib. If you just upgraded VirtualBox, please terminate all VMs and make sure th
at neither VBoxNetDHCP nor VBoxNetNAT is running. Then try again. If this error persists, try re-installing VirtualBox. (VERR_VMM_R0_VERSION_MISMATCH)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
Details: 00:00:00.488143 Power up failed (vrc=VERR_VMM_R0_VERSION_MISMATCH, rc=NS_ERROR_FAILURE (0X80004005))
复制代码
看上去是某些驱动或服务没有正常工作。于是参考VirtualBox文档,把vboxdrv和vboxnet都启用,然后重启……恭喜,系统崩溃了……
查了很久也没查出原因,我甚至另外搞了一台电脑安装了FreeBSD11重试,还是一样的问题。
只要下面任意一个命令运行就崩溃:
service vboxnet onestart
kldload vboxdrv.ko
复制代码
搜了很久也没找到原因,搞了好几天,直到今天搜到有人说了一句:可能跟系统不完全兼容。我灵光一闪——对了,我的VBox是通过pkgng安装的,有可能不兼容。于是果断换成多年不用的ports:
portsnap fetch
portsnap extra # 或update,如果已经安装了ports的话
cd /usr/ports/emulators/virtualbox-ose
make config
make
make install clean
复制代码
然而仍然没有那么顺利,因为旧版的还在……
pkg delete virtualbox-ose
复制代码
删除后再编译,仍然会有一些冲突的依赖包,全部删除掉改用ports的版本。VBox这东西依赖还是相当多的,断断续续编译了两天才算完成。最后还编译安装了一把virtualbox-ose-kmod。
为了保险起见,docker-machine和docker-compose我也是用ports的版本。
需要注意的是,如果你想用非root用户操作的话,需要先允许这个用户操作虚拟机:
pw groupmod vboxusers -m yourname
复制代码
用户需要重新登录一下,如果用了screen或tmux之类的,也需要新开会话(不是新开窗口)才会生效。
另外,为了充分利用ZFS,创建一个ZFS供machine使用:
zfs create -o mountpoint=/home/yourname/.docker tank/docker
复制代码
这样创建的虚拟机就会在tank/docker这个ZFS里了。
docker-machine
重点来了,为了使用docker,先得创建一个machine,这就需要使用前面安装的docker-machine了:
docker-machine create --driver virtualbox \
--virtualbox-memory 2048 \
--virtualbox-cpu-count 1 \
--virtualbox-disk-size 204800 \
dockerhost
复制代码
上面的命令创建了一个叫做dockerhost的虚拟机,内存2G,CPU一颗,硬盘200G,并且自动运行起来。
然后就可以对这个machine进行一系列操作了。
docker-machine ls
docker-machine stop dockerhost # 停止虚拟机
docker-machine start dockerhost # 启动虚拟机
docker-machine rm dockerhost # 删除虚拟机
复制代码
成功创建或启动一个machine之后,就可以操作docker了,不过操作之前需要设置一下环境:
eval `docker-machine env dockerhost`
复制代码
主要是就是设置几个环境变量给docker使用。
如果使用root用户,需要注意的是:
root用户的默认shell是csh,并不支持这个命令,必须使用bash。
其它用户如果也是用csh,也要注意这一点。
docker
现在终于可以开始使用docker了:
docker images
docker ps
docker run helloworld
复制代码
大功告成!
但是还没完,docker-machine里的文件路径是映射过的,所以现在试试这个是不会成功的:
docker run -it --rm -v /home/yourname:/var/workdir alpine /bin/sh
# cd /var/workdir
# touch test
# exit
> cd /home/yourname
> ls test # 并没有这个文件
复制代码
因为-v映射的路径不正确,必须使用在machine里映射过的路径。默认的映射路径是:
share => /home
复制代码
所以上面那个测试可以改为:
docker run -it --rm -v /share/yourname:/var/workdir alpine /bin/sh
复制代码
这样再做上面的测试就可以成功了。
当然那个默认映射可以自己在VirtualBox里修改,或者在创建docker-machine的时候指定。
weixin_34384681
关注
关注
点赞
收藏
评论
在FreeBSD上使用Docker
需求FreeBSD是个好东西,因为有ZFS。Docker也是个好东西,因为很爽。然而之前Docker只支持Linux,所以在其它平台上都需要搞个Linux虚拟机才能用,麻烦得很。当然现在也是一样,只是官方出了一个docker-machine可以更方便地管理虚拟机里的docker。基本用法可以参考这篇《Docker on FreeBSD》不过为了折腾这个东西,我把家里的服务器搞崩溃好多次,最...
复制链接
扫一扫
Jailer:Docker 类似于 FreeBSD 监狱的容器监狱管理
05-30
狱卒
TLDR
Jailer 的目标是解决 Docker 在 Linux 上解决的相同问题,但适用于 FreeBSD。 想象一个项目,在您已经存在的Dockerfile旁边有一个Jailerfile ,它可以用来启动一个运行已安装和配置的应用程序的 FreeBSD jail。
警告
This software is in it's infancy. Use at your own risk. Have fun.
地位
执照
单元测试
覆盖范围
问题
快速开始
狱卒档案
监狱可以在Jailerfile描述。 目标是使语法尽可能类似于Dockerfile 。
示例:
FROM freebsd
RUN echo "Hello Jailer!"
支持的命令
并非所有命令都已实现。 大多数命令需要以root身份运行:
Usage:
jailer [flags]
jailer [
FreeBSD和Linux到底有什么不同
01-07
FreeBSD和Linux到底有什么不同
参与评论
您还未登录,请先
登录
后发表或查看评论
云原生爱好者周刊:在 Linux 系统中运行 FreeBSD 子系统 | 2022-09-05
最新发布
KubeSphere
09-19
268
开源项目推荐
LSF
这个项目可以在 Linux 系统中运行 FreeBSD 子系统,理论上也支持其他类 Unix 系统,可以跑在 Docker 容器中。
例如:
(linux)$ docker build -t lsf .
(linux)$ docker run -it --rm --security-opt seccomp=unconfined lsf
# file /bin/sh
/bin/sh: ELF 64-bit LSB pie executable, x86-64, version 1 (F
Docker 也可直接在 FreeBSD 上使用(官方支持)
weixin_34270865的博客
06-07
2055
Docker on FreeBSD 是 Docker 在 FreeBSD 系统上的移植版本。Docker 原本是为 Linux 所开发设计,而最新的 FreeBSD 11-CURRENT 和 10.2 将提供对 Docker 的支持。该系统严重依赖 ZFS、jail 以及 64位的 Linux 兼容层。
安装和使用方法:
# pkg install do...
CBSD:基于FreeBSD的Docker替代方案
CSDN与《程序员》总编观察
01-24
1678
俄罗斯程序员Oleg Ginzburg基于FreeBSD的Jail机制,用Shell和C编写了类似Docker的容器项目CBSD。
项目主页是:http://www.bsdstore.ru/html/about_en.html
GitHub页面:https://github.com/olevole/cbsd
Hacker News讨论
...
unifi-pfsense:在pfSense和其他FreeBSD系统上安装UniFi Controller软件的脚本
02-05
unifi-pfsense:在pfSense和其他FreeBSD系统上安装UniFi Controller软件的脚本
freebsd 作为docker 宿主系统
weixin_34200628的博客
11-22
441
pkginstalldocker-freebsdca_root_nss
kldloadzfs
ddif=/dev/zeroof=/usr/local/dockerfsbs=1024Kcount=10000#10G
zpoolcreate-fzroot/usr/local/dockerfs
zfslist
zpoollist
zfscreate...
FreeNAS-Gogs, Gogs ( gogs.io ) 安装 FreeNAS ( 以及任何 FreeBSD Jail ).zip
09-18
FreeNAS-Gogs, Gogs ( gogs.io ) 安装 FreeNAS ( 以及任何 FreeBSD Jail ) FreeNAS gogsGogs ( gogs.io ) 为 FreeNAS ( 以及任何 FreeBSD Jail ) 安装更新脚本cd/tmpfetch --no-verify-peer https://github.
docker安装使用指南
海若的博客
10-18
105
带你进入Docker的世界
Docker优势
操作系统: debain/unbuntu /FreeBSD/Centos/openSUSE
编程语言: java、C /C++ python、Ruby、Golang
Web服务器:resin、tomcat、 apache、nginx、lighttpd、jetty
数据库:mysql、redis、mongoDB、sqlserver、H2、DB2、Mari...
freebsd查看服务_架构师修炼之微服务部署 - 深入理解Docker镜像
weixin_42333009的博客
11-29
75
Docker各类知识点进行整理分享,其他内容请参考目录。目录架构师修炼之微服务部署 - Docker简介架构师修炼之微服务部署 - 深入理解Docker镜像镜像简介它是一个创建Docker 容器的只读模板,通过DockerFile可以自定义镜像。它也是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像...
FreeBSD 安装ports
ccc77的技术资料库
01-11
275
FreeBSD系统的一个非常方便的地方就是它的ports,如果系统没安装ports的话可用下面几种方式安装ports:1、sysinstall--->configure----->distributions----->ports----->选择Ftp或其它的网络连接即可。2、直接从官方站点下载ports.tar.gz再解压,这样很快。位置:ftp://ftp.freebsd.org/pub/Fre
FreeBSD--安装Strace
jjw97_5的专栏
01-13
890
原文参考http://www.cyberciti.biz/faq/howto-installl-strace-under-freebsd/
Q. 我想跟踪并调试我的应用程序并报告第三方的软件bug,我该如何安装Strace在FreeBSD操作系统?
A. Strace是一个进程跟踪器,例如,它是一个调试工具,能够打印出进程本身或进程与子进程之间的所有的系统调用踪迹及接收到的信号。
Str
如何在Raspberry Pi上使用FreeBSD jails
Xiaoyuteacher的博客
04-22
182
Container由于Linux上的Docker而变得广泛流行,但是有很多早期的实现,包括FreeBSD上的jail系统。 这个系统最早是在2000年以FreeBSD 4.0发行的,此后一直在不断改进。 尽管20年前它主要用于大型服务器,但现在可以在Raspberry Pi上运行它。
Jails与Linux
在FreeBSD上,Container开发与Linux上的开发路径截然不同。 在FreeBSD上,在90年代后期被开发为一项严格的安全功能,用于虚拟主机,并且随着时间的流逝,它的灵活性不断提高。 限制
jetpack —— 基于 FreeBSD 的应用容器引擎
weixin_34144848的博客
06-05
256
Jetpack 是一个实现了 FreeBSD 的 App Container Specification 的参考实现。使用 jails 作为应用隔离机制,使用 ZFS 做存储。类似 Linux 下的 Docker。
常用命令:
jetpack init #初始化 ZFS 数据集和目录结构
jetpack info #获取容器信息
jetpack test...
freebsd 下安装桌面
weixin_33778544的博客
07-02
477
pkg_add -r xorg 安装浏览器
pkg_add -r gnome2 安装桌面
pkg_add -r gnome-panel 安装桌面菜单
安装完桌面后,只能用root以外的用户登入。登入前配置环境变量
echo "/usr/local/bin/gnome-session" > ~/.xinitrc
转载于:https://www.cnblogs.com...
MongoDB【第三篇】RockMongo 的安装
weixin_34149796的博客
03-09
44
第一步:准备
1. 安装 Nginx
参照Nginx【第一篇】安装
2. 安装 php
参照PHP【第一篇】安装
3.RockMongo 安装包
rockmongo-v1.0.5.r53.zip
第二步:安装
1. 安装autoconf
# yum install autoconf
未安装会报错:
2. 安装MongoDB PHP Driver...
Docker 被禁,十大开源产品可替代
Oner.wv的专栏
08-31
1228
来源:安全牛众所周知,在全球范围内,Docker已经发展成为云计算的核心技术之一。作为流行的容器管理技术,Docker的最大优点是能将应用与计算环境分离,允许开发者在同一台计算机上使用不...
1.5W字Docker详解,从入门到下地干活一条龙
qq_19007169的博客
05-25
108
什么是 Linux 容器
Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。
容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
更加详细地来说,请您假定您在开发一个应用。您使用的是一台笔记本电脑,而且您的开发环境具有特定的配置。其他开发人员身处的环境配置可能稍有不同。您正在开发的应用依赖于您当前的配置,还要依赖于某些特定文件。
与此同时,您的企业还拥有标准化的测试和生产环境,且具有
FreeBSD下面Ports安装
随机思考
11-28
176
1、如何只抓取 tarball? 2、如何仅做到解开 tarball的步骤? 3、如何仅做到解开 tarball 并补上官方提供的 patch? 4、如何安装一个新的 port? 5、如何安装一个新的 port,并将打包(package)起来? 6、如何打包一个 port,并将其所有相依的 ports 也打包起来? 7、如何对一个已经安装的 port 打包? 8、如何清理 ports 编辑期间所产...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
weixin_34384681
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
148
原创
周排名
107万+
总排名
104万+
访问
等级
6398
积分
5890
粉丝
214
获赞
30
评论
1286
收藏
私信
关注
热门文章
$$FastClassBySpringCGLIB$$invoke(<generated>)错误
23340
TypeError: Object of type int64 is not JSON serializable
17050
给Windows server 2008 r2系统镜像装载usb3.0驱动
16053
【IIS错误 - HTTP 错误 500.19】HTTP 错误 500.19- Internal Server Error 错误解决方法(二)...
14516
MySQL数据库时间设置自动添加时间和自动更新时间
10421
最新评论
Dart API 扩展
bawomingtian123:
感谢楼主分析,但是结合源码学习时,发现(flutter)dart层被标记为native的方法,使用的是Dart_SetFfiNativeResolver 方法和楼主博客里面将的Dart_SetNativeResolver 不一致,不知是楼主混淆了,还是源码升级了出现这个差异
Go中string转[]byte的陷阱
han006006:
学习了,感谢
使用poi读取word2007(.docx)中的复杂表格
自由的法利亚:
楼主棒棒!!
luanet性能测试
阿仇_Parsifal:
博主整理的很棒,给你点赞
词法,语法,语义
吴小皓:
可以可以,很形象
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
Servlet、JSP总结(1)
mac进行acm(C/C++)编程
2019年386篇
2018年723篇
2017年966篇
2016年500篇
2015年444篇
2014年349篇
2013年278篇
2012年291篇
2011年189篇
2010年159篇
2009年127篇
2008年106篇
2007年64篇
2006年51篇
2005年26篇
2004年15篇
目录
目录
最新文章
Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
Servlet、JSP总结(1)
mac进行acm(C/C++)编程
2019年386篇
2018年723篇
2017年966篇
2016年500篇
2015年444篇
2014年349篇
2013年278篇
2012年291篇
2011年189篇
2010年159篇
2009年127篇
2008年106篇
2007年64篇
2006年51篇
2005年26篇
2004年15篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值