【玩转开源】制作Docker镜像
做嵌入式方向经常会遇到的一个问题,就是编译环境安装,如果换电脑,再重新安装环境是一个比较费时的事情,这个时候可以自己制作一个Docker镜像,然后把编译环境在Docker镜像里面配置好,以后同步环境就非常方便了,接下来我们就一起来看一下如何制作一个Docker镜像。
1. 制作前准备
登录Docker Hub,https://cloud.docker.com/,申请一个账号;
申请好后,然后创建一个自己的Repository,注意Repository的命名为小写。

接下来我们就一起来制作一个Docker镜像。
2.制作一个docker镜像
1)首先我们pull一个docker官方提供的Ubuntu镜像:
docker pull ubuntu:16.04
2)查看镜像是否已经下载:
docker images

3)运行镜像:
docker run -it --rm ubuntu:16.04
这个时候就会进入到Docker container(容器)里面,然后执行make,gcc发现没有相应的命令。
我们通过exit退出Docker container(容器),然后制作一个带编译工具的镜像。

4)接下来我们通过Dockerfile来定制我们自己的镜像:
创建Dockerfile文件,在文件里面添加安装命令如下:
vim Dockerfile
# ubuntu 16.04 with compile env
FROM ubuntu:16.04
MAINTAINER jackzengcn<jackzeng@banana-pi.com>
RUN apt-get update && apt-get upgrade && apt-get install vim -y
RUN apt-get install -y net-tools && apt-get install -y iputils-ping
RUN apt-get install -y gcc-arm-linux-gnueabi
RUN apt-get install -y gcc-arm-linux-gnueabihf
RUN apt-get install -y gcc-aarch64-linux-gnu
RUN apt-get install -y device-tree-compiler
RUN apt-get install -y git && apt-get install -y make && apt-get install -y gcc
RUN apt-get install -y bc && apt-get install -y cpio
在这里,我将会安装一些编译工具到即将要制作的Docker镜像中。
FROM 表示以刚刚下载的Docker镜像 Ubuntu:16.04为基础制作;
MAINTAINER 表示维护者信息;
RUN 表示要执行的命令。
5)接下来我们编译自己的Docker镜像:
docker build -t TAGNAME . (注意TAGNAME后面有个“.”,“.”表示Dockerfile的路径;另外TAGNAME要与docker hub的Repository名字保持一致)
我这里的Repo名称为:jackzengcn/bpiboardbuild
所以我的build命令为:docker build -t jackzengcn/bpiboardbuild .

6)build完成后,就可以校验刚才build的镜像:
docker run -it --rm TAGNAME
这次登录后,就会发现这些命令已经安装好了。

7)校验成功后,就可以准备push镜像到远端Docker仓库,登录docker:
docker login

8)开始push,docker push TAGNAME
docker push jackzengcn/bpiboardbuild:latest

到此,我们自己定制的Docker镜像就已经完成了。
【玩转开源】制作Docker镜像的更多相关文章
- [开源]制作docker镜像不依赖linux和Docker环境
背景 最近群友们经常反馈docker镜像制作起来有点麻烦,我开源的antdeploy工具虽然可以制作镜像但是必须有一个提前:有一台安装好docker的linux服务器.因为大家开发环境基本上都是win ...
- SpringBoot系列: 制作Docker镜像的全过程
本文主要参考了 https://segmentfault.com/a/1190000016449865 , 感谢作者的付出. 另外, 在本文中, 演示了Windows+Maven+Docker To ...
- 制作Docker镜像的两种方式
此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...
- 体验SpringBoot(2.3)应用制作Docker镜像(官方方案)
关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...
- 详解SpringBoot(2.3)应用制作Docker镜像(官方方案)
关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...
- Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化
Dockerfile 自动制作 Docker 镜像(三)-- 镜像的分层与 Dockerfile 的优化 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云 ...
- Dockerfile自动制作Docker镜像(二)—— 其它常用命令
Dockerfile自动制作Docker镜像(二)-- 其它常用命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerf ...
- Dockerfile 自动制作 Docker 镜像(一)—— 基本命令
Dockerfile 自动制作 Docker 镜像(一)-- 基本命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:手动制作Do ...
- 手动制作Docker镜像
手动制作 Docker 镜像 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器(用来用去感觉 Windows 的 Docker 出各种问题,比如使用 ...
随机推荐
- MySQL数据库开发的三十六条军规
一.核心军规 尽量不在数据库做运算,cpu计算的事务必移至业务层; 控制表.行.列数量([控制单张表的数据量 1年/500W条,超出可做分表],[单库表数据量不超过300张] .[单张表的字段个数不超 ...
- [CQOI2016]伪光滑数
题目描述 若一个大于1的整数M的质因数分解有k项,其最大的质因子为Ak,并且满足Ak^K<=N,Ak<128,我们就称整数M为N-伪 光滑数.现在给出N,求所有整数中,第K大的N-伪光滑数 ...
- 状压dp(状态压缩&&dp结合)学习笔记(持续更新)
嗯,作为一只蒟蒻,今天再次学习了状压dp(学习借鉴的博客) 但是,依旧懵逼·································· 这篇学习笔记是我个人对于状压dp的理解,如果有什么不对的 ...
- (八) Usb摄像头描述符解析
目录 Usb摄像头描述符解析 总结 参考资料 打印设备描述符 打印配置描述符 打印接口联合体描述符 打印接口描述符 打印当前设置的额外描述符 代码解析额外的描述符 打印端点描述符 title: Usb ...
- 从Random Walk谈到Bacterial foraging optimization algorithm(BFOA),再谈到Ramdom Walk Graph Segmentation图分割算法
1. 从细菌的趋化性谈起 0x1:物质化学浓度梯度 类似于概率分布中概率密度的概念.在溶液中存在不同的浓度区域. 如放一颗糖在水盆里,糖慢慢溶于水,糖附近的水含糖量比远离糖的水含糖量要高,也就是糖附近 ...
- jQuery使用(十二):工具方法之ajax的无忧回调(优雅的代码风格)
jQuery.ajax()方法的应用 jQuery.ajax()的无忧回调(优雅的代码风格) 一.jQuery.ajax()方法的应用 jQuery.ajax()实质上就是在ajax的基础上进行了封装 ...
- Java裸写爬虫技术,运用多线程技术,高效爬取某个医疗机构网站数据
最近喜欢上了数据的庞大的感觉,就爬取了一下某个医疗机构网站医疗数据,由于数据量庞大,只爬取了江西省的各个市的各个医院的各个科室的各个科室.中各种信息.其中用的持久层技术是hibernate框架,和用到 ...
- django在windows下的经历
django-admin.py startproject project_name 去掉.py 常见命令:https://blog.csdn.net/weixin_42134789/article/d ...
- java字符串转为Map类型:split()方法的应用
方法一: package com.thinkgem.jeesite.modules.socketTest.demo2; import java.util.HashMap; import java.ut ...
- java程序设计习题总结
---恢复内容开始--- main()方法的参数名可以改变:main()方法的参数个数不可以改变. 当一个程序没有main()方法是,是可以编译通过的,但是不能给运行,因为找不到一个主函数入口. 标识 ...