docker 编译环境搭建

317 阅读2分钟

操作系统:Ubuntu 22.04.1 LTS

编译环境 - Docker

1.安装docker

sudo apt install docker.io
sudo groupadd docker # Add the docker group if it doesn't already exist. 
sudo gpasswd -a fry docker # Add user fry to docker group 
sudo service docker restart # restart Docker daemon 
logout # log out and log back in

2.创建-Dockerfile

# Dockerfile for buildserver

FROM ubuntu:16.04

RUN apt-get update
RUN apt-get upgrade -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc u-boot-tools dwarfdump bc libtool make g++ unzip libncurses5-dev locales sudo cmake mtools gcc-arm-none-eabi vim-common srecord mtd-utils squashfs-tools

# set /bin/sh to bash
RUN rm /bin/sh && ln -sf /bin/bash /bin/sh

# Set the locale
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

# Create user with sudo privileges
# IMPORTANT:
# user build should have the same uid as your host user.
# If your host user's uid is not 1000, add `-u <uid>` after useradd command
RUN useradd -ms /bin/bash build && usermod -aG sudo build
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# Fake out logname (no login context in docker build)
RUN echo "echo build" > /usr/bin/logname

# Set as default user
USER build
WORKDIR /home/build

RUN echo 'alias ls="ls --color"' >> ~/.bashrc

CMD ["/bin/bash"]

3.从Dockerfile创建docker镜像(buildserver_xxxx 需要加自己名字避免冲突 repeat docker build -t ubuntu/buildserver_1003 -f Dockerfile . (docker目录下编译docker镜像)

docker build -t ubuntu/buildserver_xxxx -f Dockerfile .
  1. 从docker镜像运行容器(编译的操作命令都在docker容器中执行, ubuntu/buildserver 是镜像名字,buildserver 是容器名字,都要改成你自己的)
docker run --privileged --rm -ti -u build -v $(pwd):/home/build/sav837 -w /home/build/sav837 --name buildserver_xxx ubuntu/buildserver_xxx
  1. 打开多个终端连接到同一个运行中的docker容器
docker exec -it buildserver_xxx bash

6.Docker其他相关常用命令

查看所有运行容器:  docker ps   

停止某个容器:docker stop xxxxbuildserver   

删除某个容器:docker rm xxxxbuildserver

启动某个容器  docker start 3ac294f4c93482fb888bf45a9039a324b611258ba5b841de461ed61a0f5a3f4b

进入某个容器 docker exec -it xxxxxx ls