1. 背景
在实际工作中,由于系统本身版本过低,在接受新项目时出现系统版本过低而无法开始工作的问题。
为了解决该问题,使用Docker构建基于ubuntu-18.04的Docker镜像,以解决版本兼容问题。
2. 构建rootfs
2.1. 下载ubuntu-18.04 rootfs
wget http://cdimage.ubuntu.com/ubuntu-base/releases/18.04.5/release/ubuntu-base-18.04.5-base-amd64.tar.gz
2.2. 构建rootfs
mkdir -p ubuntu-18.04.05
tar zxvf ubuntu-base-18.04.5-base-amd64.tar.gz -C ubuntu-18.04.05
chroot ubuntu-18.04.05
2.3. 完善rootfs
2.3.1. 设置rootfs环境变量
export USER=ubuntu-18.04
export HOST=ubuntu-18.04
2.3.2. 设置主机&DNS
echo $HOST > /etc/hostname
echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts
echo "127.0.0.1 $HOST" >> /etc/hosts
echo "nameserver 127.0.1.1" > /etc/resolv.conf
2.3.3. 安装依赖库
apt-get update
apt-get install -y vim git dropbear python build-essential \
u-boot-tools device-tree-compiler libfdt-dev libc6-i386 \
autoconf libtool pkg-config libncurses5 libncurses5-dev \
bc libssl-dev wget python-pip flex bison \
gcc-multilib cmake texinfo clang lrzsz
pip install --upgrade lxml
exit
3. 构建Docker image
3.1. 打包rootfs
cd ubuntu-18.04.05
tar zcvf rootfs.tgz bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
cd -
3.2. build镜像
3.2.1. 准备
mkdir -p docker-ubuntu-18.04-image
cd docker-ubuntu-18.04-image
mv ../ubuntu-18.04.05/rootfs.tgz .
3.2.2. 编写Dockerfile文件
FROM scratch
ADD rootfs.tgz /
CMD [echo -e "Hello World!"]
3.2.3. 构建image
docker build -t ubuntu-18.04 .
3.3. docker images查看镜像
3.4. 启动docker容器
docker run -it -v /myDir:/myDir ubuntu-18.04 /bin/bash