Dockerfile创建docker镜像编译yocto工程

修改docker中的时区

# 2020-01-21 gj_bing 设置时区同步时间
RUN apt-get update && apt-get install -y \
	tzdata \
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

修改字符集

# 2020-01-21 gj_bing 设置locale字符集为en_US.UTF-8,中文可以设置为zh_CN.UTF-8
RUN apt-get update && apt-get install -y \
	locales \
RUN locale-gen en_US.UTF-8 \
 && DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
RUN locale-gen en_US

修改source源为阿里云的源

RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
    && apt-get clean \
    && apt-get update 

完整的Dockerfile文件

FROM ubuntu:16.04
MAINTAINER gj_bing

# 安装编译依赖包,menuconfig依赖包tmux,ncurses-dev 还有时区依赖包tzdata包
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
    && apt-get clean \
    && apt-get update && apt-get install -y \
    gawk \
    wget \
    git-core \
    diffstat \
    unzip \
    texinfo \
    gcc-multilib \
    build-essential \
    chrpath \
    socat \
    libsdl1.2-dev \
    xterm \
    cpio \
    python \
    python3 \
    python3-pip \
    python3-pexpect \
    xz-utils \
    debianutils \
    iputils-ping \
    libssl-dev \
    vim \
    git \
    ncurses-dev \
    tmux \
    tzdata \
    locales \
    expect \
 && rm -rf /var/lib/apt/lists*

#修改语言环境
RUN locale-gen en_US.UTF-8 &&\
        DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8

RUN locale-gen en_US

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#创建容器时默认进入bash环境
CMD "/bin/bash"

根据Dockerfile创建docker镜像

tree .
.
└── Dockerfile
docker build -t yocto-ubuntu:latest --rm=true .

创建容器脚本

#!/bin/bash

#脚本的使用方法
if [ $# != 1 ]; then
        echo "useage: $0 code_dir"
        exit 1
fi

DOCKER_IMG="yocto-ubuntu:latest"
HOST_NAME="docker-server"
CONTAINER_NAME=${USER}"-build-icc"
CODE_PATH=`echo $(cd "$(dirname "$1")"; pwd)/$(basename "$1")` #获取源码目录的绝对路径

#判断代码路径是否为目录
if [ ! -d $CODE_PATH ]; then
        echo "===> code path is invalid"
        exit 1
fi

#创建容器,同时创建与宿主机相同的用户名与UID,保证编译出的目标文件读写权限与宿主机的用户相同
res=`docker ps -a | grep $CONTAINER_NAME`
if [ $? = 0 ]; then
        echo "===> creating container...."
        docker stop $CONTAINER_NAME > /dev/null
        docker rm $CONTAINER_NAME > /dev/null
        docker run -it -h $HOST_NAME --name $CONTAINER_NAME -v $CODE_PATH:$CODE_PATH -w $CODE_PATH $DOCKER_IMG sh -c "useradd -u ${UID} ${USER} && su ${USER}"
else
        echo "===> creating container...."
        docker run -it -h $HOST_NAME --name $CONTAINER_NAME -v $CODE_PATH:$CODE_PATH -w $CODE_PATH $DOCKER_IMG sh -c "useradd -u ${UID} ${USER} && su ${USER}"
fi
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值