Docker编译环境的使用(ubuntu)

news2024/12/23 5:25:01

目录

Ubuntu安装docker

重启docker

拉取镜像

进入docker安装软件

提交docker

添加用户到docker组

进入docker

添加build用户

停止容器

保存docker镜像

load镜像

删除容器


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

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

拉取镜像

sudo docker pull ubunut:16.04

进入docker安装软件

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

安装完后exit退出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组

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" ];then
    DOCKER_HOME="/root"
fi
if [ ! -d "$HOME/.cache" ];then
    mkdir "$HOME/.cache"
fi

IMG="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

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" ];then
    DOCKER_HOME="/root"
fi
if [ ! -d "$HOME/.cache" ];then
    mkdir "$HOME/.cache"
fi

IMG="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镜像

先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.coloradmin.cn/o/2113541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git使用基础教程

(一)Git下载 git官网 - downloads 创建本地数据仓 1.创建文件夹 2.当前目录 cmd ---git init gitee.com注册登录 git创建项目 ide 项目地址本地数据库 ide项目上传云端 (一)git 1.git下载 2.新建仓库 3. 配置Configure---Version Control---Git----path to Git Get from…

某里227逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解…

【中国国际航空-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

【LeetCode】最接近的三数之和

题目要求 解题思路 这道题解题方法和三数之和解题思路一样&#xff0c;可以参考上一篇博客 代码实现 class Solution { public:int threeSumClosest(vector<int>& nums, int target) {//排序sort(nums.begin(),nums.end());int lennums.size();//固定一个&#x…

流媒体协议RTSP(其二)

欢迎诸位来阅读在下的博文~ 在这里&#xff0c;在下会不定期发表一些浅薄的知识和经验&#xff0c;望诸位能与在下多多交流&#xff0c;共同努力 文章目录 前期博客一、RTSP简介二、请求消息结构三、应答消息结构四、RTSP交互流程 前期博客 流媒体与直播的基础理论&#xff08…

Datawhle X 李宏毅苹果书AI夏令营深度学习笔记之——卷积神经网络的前世今生

一、卷积神经网络简介 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种深度学习模型&#xff0c;尤其擅长处理图像和视频等高维度的数据。CNN 通过模仿人类视觉系统的工作方式&#xff0c;自动学习数据中的空间层次结构&#xff0c;使得它在计算…

启动第一个docker容器

1 、 docker pull ubuntu:20.04 下载镜像 2、 docker image ls 查看镜像 3、 docker run --nametest -itd 9df6d6105df2 创建并运行一个容器 4、 查看容器 docker ps -a 5、 登录容器 docker exec -it test /bin/bash 6 退出容器 exit 7 删除容器 docker rm 238514292c…

JVM面试真题总结(二)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ volatile关键字能防止指令重排序吗?如何实现? volatile关键字可…

2024国赛数学建模B题完整分析参考论文38页(含模型和可运行代码)

2024 高教社杯全国大学生数学建模完整分析参考论文 B 题 生产过程中的决策问题 目录 摘要 一、问题重述 二、问题分析 三、 模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1样例代码&#xff08;仅供参考&#xff09; 4.…

基于人工智能的图像风格迁移系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像风格迁移是一种计算机视觉技术&#xff0c;它可以将一种图像的风格&#xff08;如梵高的绘画风格&#xff09;迁移到另一幅图像上…

在VMware虚拟机中编译文件的时候报错:找不到头文件ft2build.h

以下是报错内容&#xff0c;提示说找不到头文件ft2build.h freetype_show_font.c:12:10: fatal error: ft2build.h: No such file or directory #include <ft2build.h> ^~~~~~~~~~~~ compilation terminated. 在编译之前已经交叉编译了freetype&#xff0c;…

如何使用 Python 读取 Excel 文件:从零开始的超详细教程

“日出东海落西山 愁也一天 喜也一天 遇事不钻牛角尖” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;||Day03为什么要用 Python 读取 Excel 文件&#xff1f;准备工作&#xff1a;安装所需工具安装 Python安装 Pandas安装 openpyxl 使用 Pandas 读取 Excel 文件什么是 …

归并排序-非递归实现

归并排序的非递归实现 我们可以把 一个数组 先拆分成 最小单元&#xff0c;这是分&#xff0c; 拆分成最小单元之后&#xff0c;我们对每个最小单元进行一次合并&#xff0c;这是治 最小单元 合并一次之后&#xff0c;我们继续 在上一次合并的基础上拆分&#xff0c;并且合…

心觉:你为什么没有更多的钱

很多人希望自己可以赚更多的钱 但是他的内心又很讨厌钱&#xff0c;他自己并不知道 一边希望自己赚更多钱&#xff0c;一边在骨子里觉得“金钱是万恶之源” 这是一种神经质的错乱 这种现象在什么情况下会表现得比较明显呢&#xff1f; 某位高官因为贪污受贿落马了&#xf…

Cesium坐标系

针对作坐标系这边参考网上以及自己的一些理解大家可以参考学习一下。 文章目录 **一、GIS 坐标系****二、经纬度坐标&#xff08;球面坐标&#xff09;****三、地理坐标&#xff08;弧度&#xff09;****四、屏幕坐标系****五、空间直角坐标系****六、Cesium 中的坐标系****七、…

【C++模版初阶】——我与C++的不解之缘(七)

一、泛型编程 在之前&#xff0c;我们想要实现一个交换两个值的函数&#xff0c;我们要实现好多个&#xff08;int类型、double类型、char类型以及自定义类型&#xff09;对于每一个类型&#xff0c;我们都需要实现一个交换函数&#xff1a; int Swap(int& x, int& y)…

【Qt】仿照qq界面的设计

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug>//QT中信息调试类&#xff0c;用于输出数据&#xff0c;无需使用该类的实例化对象&#xff0c;直接使用成员函数即可 #include <QIcon>//图标类 #include <QPushButton&…

【笔记】数据结构刷题09

快速排序 215. 数组中的第K个最大元素 class Solution { public:int findKthLargest(vector<int>& nums, int k) {return divide(nums,0,nums.size()-1,nums.size()-k);}int divide(vector<int>& nums,int left,int right,int k){if(leftright)return nums…

Linux 如何将pwd的结果同步复制到剪贴板

pwd是我们经常使用的一个命令&#xff0c;它的作用是显示当前所在路径。 不过&#xff0c;很多时候我们使用pwd命令不仅仅是查看当前路径&#xff0c;而是复制路径。 通常情况下&#xff0c;使用pwd命令进行复制路径的操作如下&#xff1a; 使用pwd显示路径&#xff08;键盘…

计算机毕业设计选题推荐-健康健身追踪系统-运动健身系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…