1
icecreamxuegao OP 其他两个文件挂载正常,我在容器里面用 apk add docker 安装 docker 以后也能正常使用,有点不明白为什么 docker 挂载不上去
|
2
111qqz 2019-12-10 10:33:31 +08:00
|
3
hantsy 2019-12-10 10:38:37 +08:00
Docker 里面再跑 Docker,好像看了一些文章,不怎么推荐使用(有一些莫名的其妙的问题)。
Docker 里面的运行环境应该另外安装吧。 |
4
hantsy 2019-12-10 10:40:29 +08:00
一般挂载的包括:日志,数据,配置 等需要备份的东西。其他的我好像从来没有通过这种方式去实现 Host,Guest 共享。
|
5
icecreamxuegao OP @hantsy 没有在 docker 里面跑 docker,我只是想用在 docker 里面用 docker 命令去编译镜像,然后再宿主机里面跑
|
6
sleven 2019-12-10 10:53:48 +08:00 via iPhone
你想用 Docker in Docker 模式( DinD )的话不是这么用的,起码不是简单把宿主机的 docker 文件挂载进容器就能用,你可以自己搞个基于 Jenkins 并在里面安装 Docker CE 的镜像。具体可以参考这篇文章: https://medium.com/swlh/quickstart-ci-with-jenkins-and-docker-in-docker-c3f7174ee9ff
|
7
Hopetree 2019-12-10 11:21:01 +08:00 1
我记得是权限问题,因为 Jenkins 容器的用户是 Jenkins,但是 docker 需要 root 用户以及有权限的用户,反正就是权限问题吧,网上挺多这方面的
其实我觉得没必要 Jenkins 运行 docker,搞个从节点,从节点有 docker 就行了,我一致都是主从节点搞的,主节点只运行 Jenkins 分配任务,从节点安装各种环境运行任务,从节点可以用容器运行任何,完美解决 |
8
zuihoudezhanyi 2019-12-10 14:15:33 +08:00
/root/jenkins/j-data 目录权限修改为 1000,应该可以了,我之前碰到过
|
9
zuihoudezhanyi 2019-12-10 14:17:05 +08:00
@zuihoudezhanyi 是用户和用户组
|
10
jackleeforce3615 2019-12-10 15:13:20 +08:00 1
我就是这样玩的,用 docker 的方式运行 jenkins,然后在 jenkins 中 slave 节点也是一些 docker,因此在 jenkins 中必须要能启动 docker 命令,比如 docker run ,docker inspect 等等。
我是参考这两篇文章: https://www.cnblogs.com/leolztang/p/6934694.html https://blog.container-solutions.com/running-docker-in-jenkins-in-docker 如果玩高级一点,docker 方式安装的 jenkins,构建中调用其他服务器(slave)上的 docker,参考: https://jacklee.work/%E5%B7%A5%E4%BD%9C/2019-09-27-jenkins%20%E5%A3%B0%E6%98%8E%E5%BC%8Fpipeline%E8%B0%83%E7%94%A8%E8%BF%9C%E7%A8%8BDocker%E6%89%A7%E8%A1%8C%E4%BB%BB%E5%8A%A1.html 贴一下我的 docker-compose.yml 和 jenkins 的 dockerfile: ![docker-compose]( https://tva1.sinaimg.cn/large/006tNbRwgy1g9rmx1ilvqj30mj0h8wgk.jpg) ![dockerfile]( https://tva1.sinaimg.cn/large/006tNbRwgy1g9rmy4arfcj30ld08gt9u.jpg) |
11
icecreamxuegao OP 好了,问题已经找到了,是因为 alpine 识别不了宿主机可执行文件的格式,换了另外一个镜像就可以了
|
12
icecreamxuegao OP @jackleeforce3615 thx,我去看看。之前没用过 jenkins
|
13
icecreamxuegao OP @zuihoudezhanyi 不是权限的问题,是 jenkins 我用了 alpine 版的镜像,宿主机是 centos 的,alpine 识别不了可执行文件
|
14
fatbear 2019-12-11 12:04:28 +08:00 1
@icecreamxuegao 并非是不识别可执行文件,是因为 apline 依赖的底层 C 库是 musl,而你在外面环境编译的 docker 大概率是基于 glibc 的, 库的名称不一致,导致没找到依赖库运行不了,尝试在 apline 镜像里运行 mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2 建立 glibc 映射到 musl 的软链接在运行 docker 试试
|
15
fatbear 2019-12-11 12:12:49 +08:00 1
你在里面 apk add docker 可以正常运行自然也很好理解,你在里面安装 docker,在里面编译,自然不会出现不兼容的情况,但是宿主机是 centos,glibc 编译的程序在基于 musl 的 apline 上运行,就会碰到问题。楼主可以用 ldd 查看宿主机的 /usr/bin/docker,再进到容器里用 ldd 查看 apk add docker 之后的 /usr/bin/docker,就很容易明白为什么映射进去的运行不了
|