【玩转开源】制作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 出各种问题,比如使用 ...
随机推荐
- python面试题整合
面试题整合 面试题—并发编程部分
- 微擎$_W['uniacid']无法获取
原因: 微擎非系统级别管理员(不是商户管理员),必须要https才能取到值
- Codeforces Round #534 (Div. 1)
A 构造题 有一个44的方格 每次放入一个横向12或竖向2*1的方格 满了一行或一列就会消掉 求方案 不放最后一行 这样竖行就不会消 然后竖着的放前两行 横着的放第三行 循环放就可以啦 #includ ...
- 「LibreOJ β Round #4」框架 [bitset]
题面 loj #include <cmath> #include <cstring> #include <cstdio> #include <cstdlib& ...
- CSS3常用的循环动画
定义动画 @keyframes rotatefresh { from { transform: rotate(0deg) } to { transform: rotate(360deg); trans ...
- 哈尔滨工程大学第十四届程序设计竞赛(同步赛)F 小帆帆走迷宫(dp)
题目描述 小帆帆被困在一个 NxN 的方格矩阵迷宫,每个格子中都有一个整数 A[i][j].小帆帆从迷宫起点(左上角)格子 A[1][1]开始走,每一步可以向右或向下移动,目标是移动到迷宫的出口右下角 ...
- CF5E 【Bindian Signalizing】
题意 \(n\)座山组成一个环,相连的圆弧上其他山它们高那么这两座山能互相看到,求能看到的山的组数. 题解 设\(left[i]\)表示左边第一个比\(i\)高的位置,同理\(right[i]\)表示 ...
- Linux系统网络编程中TCP通讯socket--send导致进程被关闭
https://blog.csdn.net/dsanmux/article/details/52083403 https://blog.csdn.net/u011425939/article/deta ...
- lumen 支持多文件上传
1.webform (注意:name后面一定要加[]号) <form method="post" enctype="multipart/form-data" ...
- Windows系统CMD下常用命令
命令 功能ASSOC 显示或修改文件扩展名关联.ATTRIB 显示或更改文件属性.BREAK 设置或清除扩展式 CTRL+C 检查.BCDEDIT 设置启动数据库中的属性 ...