机器人 救救瓜
Toggle navigation
Home
SCM-tool
Linux
Jenkins
SVN
other
About Me
Archives
Tags
使用docker 封装一个使用diskimage-builder生成镜像的环境
2020-07-20 13:43:32
701
1
0
gua_l
## 普通场景: 在ubuntu系统上,安装一系列依赖,及打包工具diskimage-builder, 然后在其上执行包含 disk-image-create 命令的脚本,生成qcow2/vmdk镜像。 ## 容器内无差别构建: 每个人想拥有自己的构建环境 ,都需要另外在自己的系统上安装所需要的软件列表,会存在系统版本和软件版本不一的情况。 将其上环境构建成固定的dokcer 镜像, 每个人不管自己的设备是redhat, centos, ubuntu,都可以使用可控版本的打包容器进行构建,并且使用的软件版本是一致的。使用的镜像基于基础系统另装了哪些工具,都是可追溯可控版的。 ## Dockerfile 将需要定义的变量,需要预装的软件,都写进dockerfile ``` FROM ubuntu:bionic AS DIB-env COPY sources.list /etc/apt/ RUN apt-get update RUN apt-get install -y python-pip RUN apt-get install -y qemu-utils RUN apt-get install -y sudo RUN apt-get install -y curl RUN apt-get install -y squashfs-tools # Install python packages RUN pip install --upgrade pip RUN pip install networkx -i http://pypi.douban.com/simple --trusted-host pypi.douban.com RUN pip install diskimage-builder -i http://pypi.douban.com/simple --trusted-host pypi.douban.com ENV TEMP_PATH=/vob_temp RUN mkdir -p ${TEMP_PATH} COPY temp.tar.gz ${TEMP_PATH} WORKDIR ${TEMP_PATH} RUN tar zxvf temp.tar.gz RUN rm -f temp.tar.gz RUN mkdir -p /temp/image_cache2 RUN cp ${TEMP_PATH}/ubuntu-image/ubuntu-20.04-server-cloudimg-amd64.squashfs /temp/image_cache2/ ``` </br> ## 构建docker镜像 ``` docker build . -tag dibenv:latest ``` </br> ## 运行docker容器 将原本在构建服务器上直接使用的命令,在容器中运行。 以下命令是用上面构建的镜像,跑一个容器,在容器里执行原来在设备上直接执行的命令 ``` docker run --rm -it dib-env ./generateImage.sh ``` 如果原来在设备是直接定变量,然后执行脚本 ,比如: ``` export DIB_DISTRIBUTION_MIRROR="http://mirrors.aliyun.com/ubuntu" ./generateImage.sh ``` 在容器中运行就可以变换为: ``` docker run --rm env DIB_DISTRIBUTION_MIRROR="http://mirrors.aliyun.com/ubuntu" -it dib-env ./generateImage.sh 或: export DIB_DISTRIBUTION_MIRROR="http://mirrors.aliyun.com/ubuntu" docker run --rm --privileged -v $PWD:$PWD --env DIB_DISTRIBUTION_MIRROR -w $PWD -it dibenv ./generateImage.sh ``` 每个选项的含义: ``` --rm 表示 退出时删除容器 -v $PWD:$PWD 表示把设备上的$PWD挂载为容器为的$PWD 目录 --env 表示定义容器里的变量 -w $PWD 表示进入容器后的工作目录 即进入容器后,cd $PWD -it dibenv 指定启动容器时使用的镜像 ```
Pre:
出现No space 但是磁盘没满 --使用了tmpfs分区但是太小
Next:
Docker build 里的pip install 执行不成功
1
likes
701
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
Sign in
to leave a comment.
No Leanote account?
Sign up now.
0
comments
More...
Table of content
No Leanote account? Sign up now.