将用户加入到docker组
# sudo usermod -aG groupname username sudo usermod -aG docker username # sudo gpasswd -a username groupname sudo gpasswd -a username docker
保证中文正常显示
ENV \ # 时区 TZ=Asia/Shanghai RUN apt-get update && \ # 安装网络工具 apt-get install -y net-tools iputils-ping traceroute&& \ # 安装编辑器,时区设置,支持命令行中文显示 apt-get install -y nano tzdata locales && \ # 修改时区为GMT+8 ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \ locale-gen zh_CN.UTF-8 && \ # 安装相关工具包 apt-get install -y curl wget bash-completion sudo && \ # 清理apt下载的包 apt-get clean && \ rm -rf /var/lib/apt/lists/* ENV LANG=zh_CN.UTF-8 \ LANGUAGE=zh_CN:zh \ LC_ALL=zh_CN.UTF-8
开启openssh-server
# 安装SSH服务 RUN apt-get update && apt-get install -y openssh-server RUN mkdir /var/run/sshd # 生成SSH主机密钥 RUN ssh-keygen -A # 设置root用户的密码(请替换为更安全的密码) RUN echo 'root:YOUR_SECURE_PASSWORD' | chpasswd # 取消root用户登录限制(出于安全考虑,请谨慎使用) RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH登录时不检查和要求客户端提供的主机密钥 RUN sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd # 暴露22端口 EXPOSE 22
创建一个普通用户
# 创建一个新的用户 'myuser' 和用户组 'mygroup',--gecos "" 表示创建用户时跳过所有额外信息的填写 RUN groupadd -r mygroup && \ adduser --disabled-password --gecos "" myuser --ingroup mygroup && \ usermod -a -G sudo myuser && \ echo "myuser:pass123" | chpasswd # 更改文件/目录的所属关系,以便新用户可以访问 RUN chown -R myuser:mygroup /data # 切换到非root用户 USER myuser
安装poetry的python虚拟环境包管理
ENV PATH="/home/myuser/.local/bin:$PATH" \ # VIRTUAL_ENV这个环境变量设定后,poetry会自动使用该目录指定的env VIRTUAL_ENV=/data/cusvenv RUN \ # 安装poetry curl -sSL https://install.python-poetry.org | python3.10 - && \ # 创建venv环境,如果是自己在docker中命令行,可以执行【source /data/cusvenv/bin/activate】进入 python3.10 -m venv ${VIRTUAL_ENV}
清理docker 的build cache
随着编译的docker镜像增多,即使本地删除了image,build cache仍然会保留。比较麻烦的是/var/lib/docker/overlay2
经常与/根目录共用一个磁盘,导致根目录磁盘占满,需要及时清理。
# 参考网址:https://docs.docker.com/reference/cli/docker/builder/prune/ # 有时候docker的build cache缓存太多,需要手动清理一下,一般是保存在【/var/lib/docker/overlay2】目录下 docker builder prune -a # 带有filter的清理,-f表示不弹出确认信息 docker builder prune -f --filter until=144h