做嵌入式方向经常会遇到的一个问题,就是编译环境安装,如果换电脑,再重新安装环境是一个比较费时的事情,这个时候可以自己制作一个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镜像的更多相关文章

  1. [开源]制作docker镜像不依赖linux和Docker环境

    背景 最近群友们经常反馈docker镜像制作起来有点麻烦,我开源的antdeploy工具虽然可以制作镜像但是必须有一个提前:有一台安装好docker的linux服务器.因为大家开发环境基本上都是win ...

  2. SpringBoot系列: 制作Docker镜像的全过程

    本文主要参考了 https://segmentfault.com/a/1190000016449865 , 感谢作者的付出. 另外,  在本文中, 演示了Windows+Maven+Docker To ...

  3. 制作Docker镜像的两种方式

    此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...

  4. 体验SpringBoot(2.3)应用制作Docker镜像(官方方案)

    关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...

  5. 详解SpringBoot(2.3)应用制作Docker镜像(官方方案)

    关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...

  6. Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化

    Dockerfile 自动制作 Docker 镜像(三)-- 镜像的分层与 Dockerfile 的优化 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云 ...

  7. Dockerfile自动制作Docker镜像(二)—— 其它常用命令

    Dockerfile自动制作Docker镜像(二)-- 其它常用命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerf ...

  8. Dockerfile 自动制作 Docker 镜像(一)—— 基本命令

    Dockerfile 自动制作 Docker 镜像(一)-- 基本命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:手动制作Do ...

  9. 手动制作Docker镜像

    手动制作 Docker 镜像 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器(用来用去感觉 Windows 的 Docker 出各种问题,比如使用 ...

随机推荐

  1. python面试题整合

    面试题整合 面试题—并发编程部分

  2. 微擎$_W['uniacid']无法获取

    原因: 微擎非系统级别管理员(不是商户管理员),必须要https才能取到值

  3. Codeforces Round #534 (Div. 1)

    A 构造题 有一个44的方格 每次放入一个横向12或竖向2*1的方格 满了一行或一列就会消掉 求方案 不放最后一行 这样竖行就不会消 然后竖着的放前两行 横着的放第三行 循环放就可以啦 #includ ...

  4. 「LibreOJ β Round #4」框架 [bitset]

    题面 loj #include <cmath> #include <cstring> #include <cstdio> #include <cstdlib& ...

  5. CSS3常用的循环动画

    定义动画 @keyframes rotatefresh { from { transform: rotate(0deg) } to { transform: rotate(360deg); trans ...

  6. 哈尔滨工程大学第十四届程序设计竞赛(同步赛)F 小帆帆走迷宫(dp)

    题目描述 小帆帆被困在一个 NxN 的方格矩阵迷宫,每个格子中都有一个整数 A[i][j].小帆帆从迷宫起点(左上角)格子 A[1][1]开始走,每一步可以向右或向下移动,目标是移动到迷宫的出口右下角 ...

  7. CF5E 【Bindian Signalizing】

    题意 \(n\)座山组成一个环,相连的圆弧上其他山它们高那么这两座山能互相看到,求能看到的山的组数. 题解 设\(left[i]\)表示左边第一个比\(i\)高的位置,同理\(right[i]\)表示 ...

  8. Linux系统网络编程中TCP通讯socket--send导致进程被关闭

    https://blog.csdn.net/dsanmux/article/details/52083403 https://blog.csdn.net/u011425939/article/deta ...

  9. lumen 支持多文件上传

    1.webform (注意:name后面一定要加[]号) <form method="post" enctype="multipart/form-data" ...

  10. Windows系统CMD下常用命令

    命令    功能ASSOC    显示或修改文件扩展名关联.ATTRIB    显示或更改文件属性.BREAK    设置或清除扩展式 CTRL+C 检查.BCDEDIT    设置启动数据库中的属性 ...