前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS8.4.2105 和 OpenEuler 20.03 下 C++ 编译环境容器镜像构建

CentOS8.4.2105 和 OpenEuler 20.03 下 C++ 编译环境容器镜像构建

作者头像
耕耘实录
发布2022-11-30 16:23:21
6420
发布2022-11-30 16:23:21
举报
文章被收录于专栏:耕耘实录

CentOS7.x 支持的 gcc 和 g++ 版本太低,使用 CentOS 8.x 进行替换,但在实际操作的过程中,使用yum进行依赖更新,出现报错,写此文以记录。

代码语言:javascript
复制
FROM centos:8.4.2105

RUN set -eux; \
    sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*; \
    sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*; \
    yum clean all; \
    yum makecache; \
    yum -y install gcc \
                   gcc-c++ \
                   gdb \
                   make \
                   cmake; \
    yum clean all; \
    yum makecache
    
COPY [ "ninja", "/usr/local/bin" ]


FROM scratch

COPY --from=0 / /

ENV TZ="Asia/Shanghai" \
    LANG="zh_CN.UTF-8"

CMD [ "/bin/bash" ]

顺便把 openEuler 的 C++ 构建镜像的 Dockerfile 也写一下:

代码语言:javascript
复制
FROM openeuler:20.03

RUN set -eux; \
    yum -y install bc \
				   gcc \
                   gcc-c++ \
                   gdb \
                   make \
                   cmake; \
    yum clean all; \
    yum makecache


FROM scratch

COPY --from=0 / /

ENV TZ="Asia/Shanghai" \
    LANG="zh_CN.UTF-8"

CMD [ "/bin/bash" ]

运行 ssh 服务的 Dockerfile:

代码语言:javascript
复制
FROM centos:8.4.2105

COPY [ "docker-entrypoint.sh", "/usr/local/bin" ]

RUN set -eux; \
    sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*; \
    sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*; \
    echo "root:develop" | chpasswd; \
    yum -y install gcc \
                   gcc-c++ \
                   gdb \
                   make \
                   cmake \
                   openssh-server \
                   rsync; \
    ssh-keygen -A; \
    yum clean all; \
    yum makecache; \ 
    chmod +x /usr/local/bin/*; \
    rm -f /run/nologin; \
    rm -f /root/{anaconda-ks.cfg,anaconda-post.log,original-ks.cfg}; \
    mkdir /var/run/sshd

FROM scratch

COPY --from=0 / /

ENV TZ="Asia/Shanghai" \
    LANG="zh_CN.UTF-8" \
    SSH_USERNAME="develop" \
    SSH_PASSWD="develop" \
    SSH_UID="1000" \
    SSH_GROUP="develop" \
    SSH_GID="1000"

ENTRYPOINT [ "docker-entrypoint.sh" ]

EXPOSE 22

CMD [ "/usr/sbin/sshd", "-D" ]

docker-entrypoint.sh 如下:

代码语言:javascript
复制
#!/bin/bash

set -eux
gcc -v
g++ -v
gdb -v
make -v
cmake -version
groupadd -g ${SSH_GID} ${SSH_GROUP}
useradd -d /home/${SSH_USERNAME} -m -c "Develop environment." -u ${SSH_UID} -g ${SSH_GID} -s /bin/bash ${SSH_USERNAME}
echo "${SSH_USERNAME}:${SSH_PASSWD}" | chpasswd

exec "$@"

容器启动命令:

代码语言:javascript
复制
docker run -d --restart always --hostname develop -e SSH_UID=`id -u` -e SSH_GID=`id -g` -e SSH_USERNAME=`whoami` -e SSH_PASSWD="dev123" -e SSH_GROUP=`id -g -n` --name develop -v ${HOME}/workspace:/home/`whoami` -p 2024:22 centos:sshd
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档