Docker编译环境的使用(ubuntu)

devtools/2024/9/25 7:02:18/

目录

docker-toc" style="margin-left:0px;">Ubuntu安装docker

docker-toc" style="margin-left:0px;">重启docker

拉取镜像

docker%E5%AE%89%E8%A3%85%E8%BD%AF%E4%BB%B6-toc" style="margin-left:0px;">进入docker安装软件

docker-toc" style="margin-left:0px;">提交docker

docker%E7%BB%84-toc" style="margin-left:0px;">添加用户到docker

docker-toc" style="margin-left:0px;">进入docker

添加build用户

停止容器

docker%E9%95%9C%E5%83%8F-toc" style="margin-left:0px;">保存docker镜像

load镜像

删除容器


docker">Ubuntu安装docker

sudo apt install docker.io

国内可用的源  

Welcome to nginx! (tencentyun.com)icon-default.png?t=O83Ahttps://ccr.ccs.tencentyun.com/

换源

在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{
"registry-mirrors": ["https://ccr.ccs.tencentyun.com/"]
}

docker">重启docker

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

拉取镜像

sudo docker pull ubunut:16.04

docker%E5%AE%89%E8%A3%85%E8%BD%AF%E4%BB%B6">进入docker安装软件

sudo docker run -it --name build3308 ubuntu:16.04 /bin/bash

安装完后exit退出docker

docker">提交docker

docker commit -m "Added some-package" -a "build" build3308 build:3308

docker image显示如下

build@ubuntu:~$ sudo docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

build 3308 4d13656ff6cf 4 minutes ago 687MB

ubuntu 16.04 b6f507652425 3 years ago 135MB

docker%E7%BB%84">添加用户到docker

sudo usermod -aG docker $USER

运行脚本启动容器

USER_ID=$(id -u)
GRP=$(id -g -n)
GRP_ID=$(id -g)
LOCAL_HOST=`hostname`
DOCKER_HOME="/home/$USER"if [ "$USER" == "root" ];thenDOCKER_HOME="/root"
fi
if [ ! -d "$HOME/.cache" ];thenmkdir "$HOME/.cache"
fiIMG="build:3308"docker run -it \-d \--privileged \--name build_3308 \-e DOCKER_USER=$USER \-e USER=$USER \-e DOCKER_USER_ID=$USER_ID \-e DOCKER_GRP=$GRP \-e DOCKER_GRP_ID=$GRP_ID \-e TERM="xterm-256color" \--env ROS_DOMAIN_ID=$(date +%N) \-v /tmp/.X11-unix:/tmp/.X11-unix:rw \-v /media:/media \-v $HOME/.cache:${DOCKER_HOME}/.cache \-v /etc/localtime:/etc/localtime:rw \-v /home/build/:/home/build \--net host \--shm-size 512M \-w /home/build \$IMG \/bin/bash

docker">进入docker

sudo docker exec -u root -it build_3308 /bin/bash

添加build用户

这里的1000和build要和你宿主机上的用户名uid一致,方便后面编译出来的权限等问题

useradd -u 1000 build

查看用户信息

cat /etc/passwd

然后exit退出

停止容器

sudo docker stop build_3308

提交修改

sudo docker commit build_3308 build:3308bs

修改脚本

USER_ID=$(id -u)
GRP=$(id -g -n)
GRP_ID=$(id -g)
LOCAL_HOST=`hostname`
DOCKER_HOME="/home/$USER"if [ "$USER" == "root" ];thenDOCKER_HOME="/root"
fi
if [ ! -d "$HOME/.cache" ];thenmkdir "$HOME/.cache"
fiIMG="build:3308bs"docker run -it \-d \--privileged \--name build_3308bs \-e DOCKER_USER=$USER \-e USER=$USER \-e DOCKER_USER_ID=$USER_ID \-e DOCKER_GRP=$GRP \-e DOCKER_GRP_ID=$GRP_ID \-e TERM="xterm-256color" \--env ROS_DOMAIN_ID=$(date +%N) \-v /tmp/.X11-unix:/tmp/.X11-unix:rw \-v /media:/media \-v $HOME/.cache:${DOCKER_HOME}/.cache \-v /etc/localtime:/etc/localtime:rw \-v /home/build/:/home/build \--net host \--shm-size 512M \-w /home/build \$IMG \/bin/bash

重新启动docker

sudo ./start_docker.sh

进入docker

docker exec -u build -it build_3308bs /bin/bash

docker%E9%95%9C%E5%83%8F">保存docker镜像

docker images看下IMAGE ID

build@ubuntu:~/work$ sudo docker images

[sudo] password for build:

REPOSITORY TAG IMAGE ID CREATED SIZE

build 3308bs_1604 d40881c1ff67 29 minutes ago 706MB

build 3308bs 3cbe2a080c3a 18 hours ago 687MB

fed93a8b490d 20 hours ago 687MB

build 3308 4d13656ff6cf 22 hours ago 687MB

ubuntu 16.04 b6f507652425 3 years ago 135MB

build@ubuntu:~/work$

然后save

sudo docker save -o rk3308.tar build:3308bs_1604

load镜像

docker load -i rk3308.tar

删除容器

sudo docker images ps -a列出来全部

sudo docker stop (id)

sudo docker rm (id)

然后sudo docker rmi (id)


http://www.ppmy.cn/devtools/108787.html

相关文章

docker容器命令汇总(全)

目录 前言一、Docker 服务管理二、镜像管理三、容器管理四、其他常用命令五、网络和存储管理总结前言 Docker是一个开放源代码软件,用于开发、运行和部署应用程序作为轻量级、可移植的容器。以下是Docker命令的汇总,分为几大类以便清晰理解: 一、Docker 服务管理 启动 Dock…

6 - Shell编程之sed与awk编辑器

目录 一、sed 1.概述 2.sed命令格式 3.常用操作的语法演示 3.1 输出符合条件的文本 3.2 删除符合条件的文本 3.3 替换符合条件的文本 3.4 插入新行 二、awk 1.概述 2. awk命令格式 3.awk工作过程 4.awk内置变量 5.awk用法示例 5.1 按行输出文本 5.2 按字段输出文…

Java 基于微信小程序的小区服务管理系统,附源码

博主介绍:✌stormjun、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

Matlab simulink建模与仿真 第九章(模型校验库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili 一、模型校验库中的模块概览 二、动静态校验模块 1、Check Static Lower Bound静态下限校验模块和Check Dynamic Lower Bound动态下限校验模块 (1)使用下限校验模块需要设置检测下限&…

通信工程学习:什么是ARQ自动重传请求

ARQ:自动重传请求 ARQ(Automatic Repeat reQuest,自动重传请求)系统是一种在数据通信中用于差错检测与纠正的重要机制。该系统在接收端进行差错检测,并在检测到错误时自动请求发送端重发出错的数据,以确保数…

python可执行文件exe

新建setup.py from cx_Freeze import setup, Executablesetup(name"jkj专用",version"0.1",description"金凯健私人专用身份证号码工具",executables[Executable("D:\\pycharm_git_2\\main\\practice\\JKJ\\Random_person_info.py")]…

微信小程序中如何监听元素进入目标元素

Page({onLoad: function(){// 如果目标节点(用选择器 .target-class 指定)进入显示区域以下 100px 时,就会触发回调函数。wx.createIntersectionObserver().relativeToViewport({bottom: 100}).observe(.target-class, (res) > {res.inter…

【软件工程】软件开发模型

三、瀑布模型 四、几种软件开发模型的主要特点 题目 判断题 选择题 小结