首先 Dockerfile 的第一行都是 FROM
我采用 Ubuntu:18.04 来构建我的基础镜像
FROM ubuntu:18.04
首先需要更新 apt 包管理系统,不然无法找到软件。默认镜像只提供了一个最基础的 rootfs,为了使普通用户享有 sudo 权限,因此首先需要安装 sudo,然后通过 shell 命令创建用户,修改 sudoers 文件。
# 创建一个普通用户并增加sudo权限,不需要密码
RUN apt update \
&& apt install -y sudo \
&& useradd -m ubuntu -s /bin/bash \
&& adduser ubuntu sudo \
&& echo "ubuntu ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/
useradd
和 adduser
用法:Ubuntu创建用户adduser和useradd
tee
命令:Linux tee命令
# 调节时区
ENV DEBIAN_FRONTEND=noninteractive
RUN apt install -y tzdata \
&& ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
tzdata
命令:在自动化运维中设置apt-get install tzdata的noninteractive方法
# 安装ZSH
RUN sudo apt install -y git zsh \
&& git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh \
&& cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc \
&& sed -i "s/robbyrussell/ys/" ~/.zshrc \
&& git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \
&& git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting \
&& sed -i "s/plugins=(git.*)$/plugins=(git zsh-syntax-highlighting zsh-autosuggestions)/" ~/.zshrc \
&& sudo usermod -s /bin/zsh ubuntu
sed
命令:sed
# 安装ssh
RUN sudo apt install -y net-tools openssh-server
# 安装vim
RUN sudo apt install -y vim \
&& echo "set nu" >> ~/.vimrc
# 安装Samba
RUN sudo apt-get install -y samba
# 安装C/C++基础环境
RUN sudo apt-get install -y build-essential
# 安装python3 pip
RUN sudo apt-get install -y python3 python3-pip \
&& mkdir -p ~/.pip \
&& touch ~/.pip/pip.conf \
&& echo "[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple/ \n[install]\ntrusted-host = pypi.tuna.tsinghua.edu.cn" >> /home/ubuntu/.pip/pip.conf \
&& sudo rm /usr/bin/python \
&& sudo ln -s /usr/bin/python3 /usr/bin/python \
&& sudo ln -s /usr/bin/pip3 /usr/bin/pip
FROM ubuntu:18.04
LABEL maintainer="huachaowu@qq.com"
# 创建一个普通用户并增加sudo权限,不需要密码
RUN apt update \
&& apt install -y sudo \
&& useradd -m ubuntu -s /bin/bash \
&& adduser ubuntu sudo \
&& echo "ubuntu ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers
# 调节时区
ENV DEBIAN_FRONTEND=noninteractive
RUN apt install -y tzdata \
&& ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
USER ubuntu
WORKDIR /home/ubuntu
# 安装ZSH
RUN sudo apt install -y git zsh \
&& git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh \
&& cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc \
&& sed -i "s/robbyrussell/ys/" ~/.zshrc \
&& git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \
&& git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting \
&& sed -i "s/plugins=(git.*)$/plugins=(git zsh-syntax-highlighting zsh-autosuggestions)/" ~/.zshrc \
&& sudo usermod -s /bin/zsh ubuntu
# 安装ssh
RUN sudo apt install -y net-tools openssh-server
# 安装vim
RUN sudo apt install -y vim \
&& echo "set nu" >> ~/.vimrc
# 安装Samba
RUN sudo apt-get install -y samba
# 安装C/C++基础环境
RUN sudo apt-get install -y build-essential
# 安装python3 pip
RUN sudo apt-get install -y python3 python3-pip \
&& mkdir -p ~/.pip \
&& touch ~/.pip/pip.conf \
&& echo "[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple/ \n[install]\ntrusted-host = pypi.tuna.tsinghua.edu.cn" >> /home/ubuntu/.pip/pip.conf \
&& sudo rm /usr/bin/python \
&& sudo ln -s /usr/bin/python3 /usr/bin/python \
&& sudo ln -s /usr/bin/pip3 /usr/bin/pip
# 清除apt缓存
RUN sudo apt autoremove \
&& sudo apt clean -y \
&& sudo rm -rf /var/lib/apt/lists/*
EXPOSE 22
ENTRYPOINT ["/bin/zsh"]
docker build . -t incipe/ubuntu:18.04
终于可以抛弃虚拟机了O(∩_∩)O