Kimen's blog Kimen's blog
首页
  • Vue
  • Java
  • 数据库
  • 技术文档
  • 经验之谈
  • 疑难杂症
  • IDE
  • MAC软件分享
  • 学习
  • 运维
  • 折腾
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Kimen Tang

全沾打工人
首页
  • Vue
  • Java
  • 数据库
  • 技术文档
  • 经验之谈
  • 疑难杂症
  • IDE
  • MAC软件分享
  • 学习
  • 运维
  • 折腾
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 技术文档

    • 容器内部执行宿主机Docker命令
      • 问题起源
      • 解决方案
      • 解析
        • 1. --privileged
        • 2. -u root
        • 3. 挂载宿主机Docker文件
    • Markdown使用教程
  • 经验之谈

  • 疑难杂症

  • 技术
  • 技术文档
Kimen
2021-01-23
目录

容器内部执行宿主机Docker命令

# 问题起源

问题起源于我在使用Docker部署的Jenkins服务时,需要通过Jenkins实现Docker的持续集成,尝试使用Docker的远程Api, 但是由于本机服务器内存不足的原因,在build镜像时总是出现内存溢出的错误。

# 解决方案

docker run -d \
 -u root \
 --restart=always \
 -p 8888:8080 \
 -p 50000:50000 \
 --privileged \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v $(which docker):/bin/docker \
 -v jenkins:/var/jenkins_home \
 -v /etc/localtime:/etc/localtime \
 --name jenkins docker.io/jenkins/jenkins
1
2
3
4
5
6
7
8
9
10
11

# 解析

# 1. --privileged

大约在0.6版,privileged被引入docker。使用该参数,container内的root拥有真正的root权限。 否则,container内的root只是外部的一个普通用户权限。

# 2. -u root

使用root用户创建容器

只使用--privileged仍不能获取root权限(不知道为啥),但是加上-u root就可以了

# 3. 挂载宿主机Docker文件

/var/run/docker.sock:Unix socket,Docker进程默认监听文件,为进行container进程间通信所用。

$(which docker):将docker命令挂载进容器中

/etc/localtime:解决容器与宿主机的时间时区不一致的问题

编辑 (opens new window)
上次更新: 2021/02/09, 02:51:02
Markdown使用教程

Markdown使用教程→

最近更新
01
『MySQL5.7』创建用户并授权
09-07
02
当『Emby、Plex、Jellyfin』遇上『阿里云盘』🎬
08-17
03
当『Infuse』遇上『阿里云盘』 🚀
08-17
更多文章>
Theme by Vdoing | Copyright © 2020-2022 Kimen Tang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式