实战 | ​Docker ubuntu:18.04 镜像制作-程序员宅基地

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

前言

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。近年来,Docker方式越来越受欢迎,本文针对Docker ubuntu的镜像操作进行了详细阐述:包括两种方式。

方式 1

1. 制作基础镜像
1) 在宿主机上安装 docker 框架:
2) 拉基础镜像:
  sudo docker pull ubuntu:18.04
3) 查看各个下载基础镜像:
  sudo docker images ubuntu:18.04
2. 制作专属镜像:anaconda + requirements.txt
1) 进入镜像:启动容器
 sudo docker run -i -t ubuntu:18.04 /bin/bash
2) 更改 apt-get 下载软件镜像源:换成国内阿里云镜像源(镜像终端)
 # 备份原镜像软件源
 mv /etc/apt/sources.list /etc/apt/sources.list.bak
 # 更改镜像为阿里镜像源
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe" >> /etc/apt/sources.list &&
 echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe" >> /etc/apt/sources.list
3) 更新源:(镜像终端)
 apt-get update
 apt-get install wget
4) 把本地安装文件上传至 docker ubuntu: (宿主机终端)
 # 查看正在运行的容器 id
 sudo docker ps
 # 复制文件至 docker ubuntu 镜像
 sudo docker cp  /home/shichao/workspace/project/defrost/update/second_stage_kafka/v100/carrefour/Anaconda3-2019.10-Linux-x86_64.sh 061095ea358c:/home/anaconda_3.sh
5) 在镜像中下载 anaconda :(镜像终端)
 # 下载 anaconda:该版本对应 python3.6
 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Linux-x86_64.sh
 # 安装 anaconda
 bash Anaconda3-5.1.0-Linux-x86_64.sh
 # 过程中全部都选择 yes
 # 使环境变量生效
 source ~/.bashrc
 # 查看是否生效:若出现 conda 4.4.10 则安装配置成功
 conda -V
6) 保存镜像:在保存镜像前保证容器不退出(宿主机终端)
 # 查看容器 id (宿主机终端)
 sudo docker ps
 # 按我们的需求更改的容器,我们可以通过命令 docker commit 来提交容器副本 (宿主机终端)
 (base) shichao@DL:~$ sudo docker commit -m "carrefour" -a "shichao" 1683ab3e55f0 shichao/ubuntu:v1
 # 参数解释如下:
 -m: 提交的描述信息
 -a: 指定镜像作者
 1683ab3e55f0:容器 ID
 shichao/ubuntu:v1: 指定要创建的目标镜像名
 # 查看新镜像 shichao/ubuntu:v1
 sudo docker images
7) 退出镜像:容器也退出(镜像终端)
 root@b08d897d4b97:/home/files# exit
8) 用新镜像启动一个容器:(宿主机终端)
 sudo docker run -t -i shichao/ubuntu:v1 /bin/bash
9) 进入一个正在启动的容器镜像:(宿主机终端)
 # 查看容器 id:
 sudo docker ps -a
 # 进入容器 id 为 1683ab3e55f0 的容器
 sudo docker exec -it 1683ab3e55f0 /bin/bash
10)镜像中安装 python 依赖:(镜像终端)
 # 拷贝依赖到容器镜像中:(宿主机终端)
 sudo docker cp  /home/shichao/workspace/project/defrost/update/second_stage_kafka/v100/carrefour/requirements.txt 061095ea358c:/home/files/requirements.txt
 # 用 anaconda 自带的 pip 安装 (镜像终端)
 root@061095ea358c:/home/files# pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
 # 返回到 6 进行保存容器
11)提交镜像到仓库:(宿主机终端)
 # 登录 https://harbor.arfa.wise-paas.com 与仓库建立联系
 # -u 后是用户名
 # -p 后是密码
 sudo docker login -u **.chang -p Wen** https://harbor.arfa.***.com
 # 本地镜像 shichao/ubuntu:v5 与仓库中 carrefour:v1.0.0 建立对应关系
 sudo docker tag shichao/ubuntu:v5 harbor.arfa.***.com/microservice/carrefour:v1.0.0
 # push 到仓库
 sudo docker push harbor.arfa.***.com/microservice/carrefour:v1.0.0

方式 2 (推荐)

1)在宿主机上安装 docker :
2)应用 APP 目录如下:
   project  
     ├── requirements.txt
     ├── Dockerfile
     └── app
         └── app.py
         └── <other .py files>
3)创建 Dockerfile:
 touch Dockerfile
4)Dockerfile 内容如下:
 FROM ubuntu:18.04
 
 #MAINTAINER jhao104 "[email protected]"
 #MAINTAINER shichao
 
 RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
 
 RUN apt-get update -y && \  
     apt-get install -y python3-pip python3-dev
 
 WORKDIR /app
 
 COPY ./requirements.txt /app/requirements.txt
 
 RUN pip3 install -r requirements.txt  -i https://pypi.tuna.tsinghua.edu.cn/simple
 
 COPY app/ /app/
 #ADD ./app.zip /
 
 ENTRYPOINT [ "python3" ]
 
 # 启动镜像后启动 app 的命令
 CMD [ "/app/consumer_defrost.py" ]
 
5)编译生成镜像:
 # shichao/ubuntu:v3.0.1 是镜像名称
 sudo docker build -t shichao/ubuntu:v3.0.1 .
6)启动镜像测试:
 sudo docker run shichao/ubuntu:v3.0.1
7)提交镜像到仓库:

详细见  [20200303: 制作 Docker ubuntu:18.04 镜像:方式 1]  

上述内容,如有侵犯版权,请联系作者,会自行删文。

推荐阅读:

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-知识星球和学术交流群已成立

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导,550+的星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加群或投稿

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Yong_Qi2015/article/details/104682047

智能推荐

许奔创新社-第44问:什么是创新者的倚天剑:正向追踪?-程序员宅基地

文章浏览阅读218次。相信绝大多数创新者都有跟我一样的经历——在最开始使用专利检索网站时,常常像用百度或谷歌一样直接输入某个关键词(如指纹识别,“FingerPrint”),然后一个猛子扎进去,一件一件地看起..._独个输入口或输出口登记器的作用

MySQL数据库安装-程序员宅基地

文章浏览阅读49次。一、下载(mysql-5.7.20-winx64.zip)https://dev.mysql.com/downloads/file/?id=473309不用注册也不用登录,直接下载就可以。二、解压  我直接放在了(虚拟机)D盘根目录,D:\mysql-5.7.20-winx64三、配置  1.解压后的文件夹里没有data文件夹和my.ini文件,需要手动新建一个my.ini文件,里...

JPA自定义SQL Column ××× not found._jpa自定义sql column 'update_date' not found.-程序员宅基地

文章浏览阅读807次。报错语句@Query(value = "select distinct(stockname) from tb_instock", nativeQuery = true)public List<Instock> getStocknames();原因是因为我从数据库中查询的数据字段只有 stockname, 没有Instock实体类中的其它字段,所以报错修改:由Instock实体类改成String@Query(value = "select distinct(stockname) fro_jpa自定义sql column 'update_date' not found.

Abaqus结果odb文件提取表面结点仿真数据_abaqus 数据提取-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏26次。在abaqus结果odb文件中提取整个表面的数据(如整个表面结点位移、应力应变、温度等)_abaqus 数据提取

Python调用外部程序——os.system()和subprocess.call-程序员宅基地

文章浏览阅读460次。通过os.system函数调用其他程序预备知识:cmd中打开和关闭程序cmd中打开程序a.打开系统自带程序系统自带的程序的路径一般都已加入环境变量之中,只需在cmd窗口中直接输入程序名称即可。以notepad为例,直接在cmd窗口中输入notepad后回车即可打开。b.打开自己安装且没有加入环境变量的程序以网易云音乐为例..._os.system subprocess.call

python制作动画代码,python画动态的雪花-程序员宅基地

文章浏览阅读368次,点赞5次,收藏5次。大家好,小编为大家解答python制作动画代码的问题。很多人还不知道python画动态的雪花,现在让我们一起来看看吧!话不多说,首先先看效果图。

随便推点

【R语言】数据的读取_r语言读取数据-程序员宅基地

文章浏览阅读2k次。col_names:可以是FALSE、TRUE或者一个字符向量,默认是TRUE。参数设置为TRUE表示读取第一行作为列明,参数设置为字符向量,表示将字符向量作为数据集的列名字。使用readxl包,提供了高效读取Excel数据的方式。skip:一个数值,表示读取数据时跳过多少条数据。n_max:一个数值,表示最多读取多少条数据。使用haven包,用于读取其他统计软件的数据。使用R语言自带的iris数据集做演示。关于system.file。_r语言读取数据

从零开始刷leetcode最大连续1的个数C语言编程解答-程序员宅基地

文章浏览阅读148次。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。

论文阅读笔记《DeepEMD: Few-Shot Image Classification with Differentiable Earth Mover’s Distance》》-程序员宅基地

文章浏览阅读861次。来源:CVPR2020原文:https://arxiv.org/abs/2003.06777v1.pdf代码:https://github.com/icoz69/DeepEMD 1.核心思想 本文提出一种基于推土机距离的度量学习的小样本学习算法(DeepEMD)。之前的基于度量学习的小样本学习算法通常是利用一个特征提取网络将支持集图像和查询集图像映射到一个特征空间,然后再设计或选择一种距离度量方式,来描述支持集图像和查询集图像之间的相似程度,并以此进行类别预测。而本文则是将图片拆分成多个图块,然后_few-shot image classification with differentiable earth mover鈥檚 distance an

数学--数论--质数处理_质数高阶规律总结-程序员宅基地

文章浏览阅读2.5k次。定义:一个数的因数只有1和本身,那么这个数是质数。质数的判断:一个数n如果不是质数那么在2—sqrt(n)sqrt(n)sqrt(n)一定有他的因子,于是:bool isPrime (int n){ for(int i=2;i*i<=n;i++) { if(n%i==0) return false; } else return false;}但是在大量元素中,比如..._质数高阶规律总结

C语言_循环嵌套(质数/素数):找2-100之间的素数/质数_用循环嵌套找出素数用c语言-程序员宅基地

文章浏览阅读5.6k次,点赞10次,收藏14次。什么是质数/素数:只能够被1和自身整除的数,2是最小的质数/* 题目(质数):找2-100之间的素数 */# include <stdio.h>int main(void){ int i, k, tag; for (i=2; i<=100; i++) //i是1-100之间的数 { tag = 0; //tag表示标志 for (k=2; k<i; k++) //k是1到i之间的任意一个数 { if (i%k == 0) //如果i被k整除_用循环嵌套找出素数用c语言

软件工程实践——软件评测作业-程序员宅基地

文章浏览阅读943次,点赞17次,收藏10次。软件功能的介绍基础功能语言处理:能够理解和生成自然语言文本,实现流畅的人机对话。知识问答:能够回答各种学科专业知识、百科知识以及生活常识问题。数学计算:支持基本的数学运算和逻辑推理。特色功能图形界面:文心一言提供丰富的图形界面,可以供用户轻松找到想要使用的功能。预设模板:提供丰富的基础模板,帮助用户快速上手。新建对话:用户可以随时开启新的话题或聊天。搜索历史记录:快速查找和回顾历史对话内容。同步历史记录:网页与APP端历史对话记录同步,实现无缝切换。附加功能。

推荐文章

热门文章

相关标签