之前体验过Ubuntu22.04版本后感觉新增的小工具很好用,就把几台linux设备都升级到了Ubuntu22,最近开发一个新功能,其中必须的编译依赖工具bcloud要求最高Ubuntu20下才能用,然后就悲催了,实在不想重装系统了,打算做一个ubuntu20+bcloud及依赖库的docker镜像,本文就记录下过程。
一、Dockerfile
我们先编写一个Dockerfile,以官方ubuntu:20.04为基础,安装基础库及编译依赖:
$ vim Dockerfile
FROM ubuntu:20.04
# install deepend lib
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y curl iputils-ping wget git git-lfs subversion screen vim tzdata cmake g++-9 python-dev libncurses5-dev uuid-dev
# install bcloud
RUN wget http://default.yanjingang.com/static/bcloud/client/install.sh
RUN /bin/bash install.sh
# install pip2
RUN wget -c https://bootstrap.pypa.io/pip/2.7/get-pip.py
RUN python2 get-pip.py
RUN pip install --no-binary=protobuf protobuf
二、构建镜像
登陆docker hub,使用Dockerfile创建镜像,并上传到docker hub方便其他机器使用:
$ vim create_docker_image.sh
#!/bin/bash
# create docker image
docker login
docker image build -t yanjingang/ubuntu20:0.0.2 .
docker image ls
docker image push yanjingang/ubuntu20:0.0.2
三、使用镜像
1. 运行镜像容器,并挂载本地目录到容器内:
$ vim run_docker_container.sh
#!/bin/bash
# run container
docker container run -it -v /home/mars/project:/home/mars/project --net=host yanjingang/ubuntu20 /bin/bash
2.容器内bcloud编译
source /root/.bashrc
cd /home/mars/project/abc
git config --global --add safe.directory /home/mars/project/abc
bcloud login-icode -u yanjingang -p Lx%2x # need vpn env
bcloud local
make
yan 23.7.6