本文详细介绍了如何在docker容器中启用和实现主机的docker *** 作,具有很好的实用价值,希望对大家有所帮助。跟我回去看看。
这是docker初学者的第一篇帖子。自然,如果你是高手,原文中分割线后面的 *** 作步骤也是一个思路。
首先说一下如何在docker中实现主机docker的实际 *** 作。我们在docker里叫它docker。
为什么要在docker中实际 *** 作主机的docker?优势显而易见。你可以把你的实际需求部署在容器里,不需要马上安装在主机上(假设你在docker里实际 *** 作不了主机的docker,你只要马上把那个软件系统安装在主机上就行了,这显然不利于管理方式和维护)。
完成这类要求其实挺简单的。你只需要把docker主机的docker文件和docker.sock文件挂载到容器中,实际上就是:
-v/var/run/docker.sock:/var/run/docker.sock
-v/usr/bin/docker:/usr/bin/docker
你需要先找到你的主机的docker和docker.sock部分。不要安装错误。当一切正常时,标准Linux是最上面的部分。
一直启动docker容器,两个文件正常挂载后,就可以在docker中执行Docker镜像等指令了。
如果有问题,则拒绝许可
尝试连接到unix:///var/run/docker.sock上的Docker守护程序套接字时被拒绝
…………………………………………………………
拨打UNIX/var/run/docker.sock:connect:权限被拒绝
溶液
立即在容器所属的主机上给予docker.sock777管理权限,并指示chmod777docker.sock。
华丽的分割线
下面是群辉系统软件。你不需要太在意这个系统软件是什么。总之,这个系统软件有一些docker级别特有的问题,让你没有那么自由,所以我选择了一种即兴解决的方式(一个想法,志愿)。首先,描述一下目前的情况:
系统软件显示docker的UI可视化工具。我们可以在这个专用工具上进行基本的挂载 *** 作,但是如果要挂载上面的docker和docker.sock文件,就不行了。我们先来看看截图:
说说图中UI实际 *** 作的局限性!
集团官网进行了一个限制,不太可能在/usr//va/等系统软件上选择文件,也就是我们不能立即挂载docker和docker.sock文件。
做ln-s软连接可行吗?
试着根据ssh命令行建立两个到jenkins文件夹的软链接(软链接docker和docker.sock),然后回到群辉的ui页面,仍然无法选中(因为群辉马上屏蔽了软链接文件,你看不到)
那么怎么解决呢?
我的方式是(软连接的方式是随机应变):
1.在图上的jenkins文件目录中创建两个文件docker和docker.sock(只要适当地命名即可)。
2.然后点击docker中的“添加文件”按钮,一切正常。选择这两个文件并挂载它们。可以正常挂载一切,制造其他装备。设备完成后,暂时不需要启动docker容器。
3.登录ssh进入群汇,很快删除jenkins文件目录中建立的两个文件,然后建立docker和docker.sock源文件到jenkins的软连接。
root@test:cd/volume1/docker/jenkins/ root@test:rm-rfdockerdocker.sock root@test:ln-s/run/docker.sock/volume1/docker/jenkins/docker.sock root@test:ln-s/usr/local/bin/docker/volume1/docker/jenkins/docker root@test:/volume1/docker/jenkins#ll total8 drwxrwxrwx1Nuggetsusers96Jun611:22. drwxr-xr-x1rootroot188May3019:29.. lrwxrwxrwx1rootroot21Jun611:22docker->/usr/local/bin/docker lrwxrwxrwx1rootroot16Jun611:21docker.sock->/run/docker.sock drwxrwxrwx1shanhongyuusers24Jun111:07java_home drwxrwxrwx1Nuggetsusers4476Jun611:00jenkins_home drwxrwxrwx1shanhongyuusers82Jun111:12maven_home4.然后返回群汇ui,启动容器,这就是极致。
(群晖禁止你选择软连接,但是linux和docker其实可以立即挂载软连接)
填写专长:使用docker在镜像系统中运行主机程序流程
Docker运行指令用于运行新容器中的命令。Dockerrun指令首先在特定印象上建立一个可写的容器层,然后用特定指令启动它。
换句话说,dockerrun相当于API/containers/create和/containers/(id)/start。
可以应用dockerstart来重新启动终止的容器,并详细应用它以前的所有更改。客户机dockerps-a查询所有容器的目录。
用法
docker运行[选项]图像[命令][参数...]
壳
示例
指定名称并指定伪TTY(-name,-it)
$dockerrun--nametest-itdebian root@d6c0fe130dba:/#exit13 $echo$? 13 $dockerps-a|greptest d6c0fe130dbadebian:7"/bin/bash"26secondsagoExited(13)17secondsagotest壳
这个实例使用debian:latestimpression来 *** 作一个名为test的容器。-表示Docker调度连接到容器的stdin的伪TTY;在容器中创建一个交互式bashshell。在本例中,bashshell根据键入exit13退出。取款密码被发送给dockerrun的呼叫者,并被记录在检测容器的数据库中。
捕获容器ID(-cidfile)
$dockerrun-cidfile/tmp/docker_test.cidUbuntuecho"test"
壳
这将创建一个容器并将测试打印到控制面板。-cidfile标志使Docker尝试创建一个新文件并将容器ID加载到其中。如果文件已经存在,Docker将返回一个不正确的文件。当Docker *** 作退出时,Docker将关闭该文件。
(-特权)的详细容器函数
$dockerrun-t-i--rmubuntubash root@bc338942ef20:/#mount-ttmpfsnone/mnt mount:permissiondenied壳
这样会失败,因为大部分潜在风险核心功能默认丢失;包含cap_sys_admin(这是挂载文件系统软件所必需的)。但是,特权标志将允许它运行:
$dockerrun-t-i--privilegedubuntubash root@50e3f57e16e6:/#mount-ttmpfsnone/mnt root@50e3f57e16e6:/#df-h FilesystemSizeUsedAvailUse%Mountedon none1.9G01.9G0%/mnt壳
设置工作文档目录[-w]
$dockerrun-w/path/to/dir/-I-tUbuntupwd
壳
-w允许命令在文件目录中运行,这里是/path/to/dir/。如果路径不存在,将在容器中建立路径。
为每个容器设置存储驱动程序软件选项。
$dockerrun-it-storage-optsize=120gfedora/bin/bash
壳
装载tmpfs(-tmpfs)
$dockerrun-d-tmpfs/run:rw,noexec,nosuid,size=65536kmy_image
壳
-tmpfs表示应该将一个空tmpfs加载到容器中,rw,noexec,nosuid,size=65536k。
挂载卷(-v,-只读)
$dockerrun-v`pwd`:`pwd`-w`pwd`-I-tUbuntupwd
壳
-v表示所有工作文档都已装入容器。-w允许在每个工作文件目录中运行该命令,以将文件目录更改为pwd返回的值。因此,这个组件应用程序容器运行命令,但它在每个工作文件目录中。
$dockerrun-v/不存在/存在:/foo-w/foo-i-tubuntubash
壳
当关联卷的服务器文件目录不存在时,Docker会自动在服务器上建立这个文件目录。在上面的例子中,Docker将在启动容器之前创建/donts/exists文件夹。
$dockerrun-read-only-v/Icanwritebusyboxtouch/Icanwrite/此处
壳
卷可以与-read-only结合使用,以 *** 作容器加载文件的位置。-read-only表示容器的根文件系统软件以写保护方式挂载,禁止在容器的特定卷之外加载。
这个docker在docker容器中启用和实现主机的实际 *** 作就是我分享给大家的全部。期待给你一个参考,也期待你的申请。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)