解决Docker容器中少包且没有root执行权限


解决Docker容器中少包且没有root执行权限

Published on August 25, 2024 by Andersen

linux 运维

1 min READ

问题表现

在以docker容器执行某些任务时会出现缺少命令需要安装的情况,比如:Jenkins在编译得时候使用的是docker得容器环境导致少包无法编译且进入容器中没有root权限

解决方案

  1. docker commit 67bc30ca936c my_new_image:tag:将容器ID67bc30ca936c的容器打包成my_new_image:tag镜像
  2. 编写Dockerfile:
# 刚才打包的镜像
FROM my_new_image:tag 
# 使用root权限
USER root 
# 修改容器中的apt镜像源
#RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g'  /etc/apt/sources.list
# 执行apt命令 在容器中安装相应的包
#RUN apt update && apt install -y zlib1g-dev
# 修改root的密码 简单粗暴,后面就可以在容器中用这个密码登录root
RUN echo "root:newpassword" |  chpasswd
# 把执行用户切回去
USER jenkins
  1. docker build -t jenkins:202408233 .:执行构建,重新构建镜像
  2. docker run:执行新打包的镜像或者修改docker-compose中的镜像,换成新打包的
  3. docker exec -it jenkins /bin/bash: 进入到容器中,然后su使用刚才的密码登录root就可以正常安装相关包了