当前位置: 首页 > 编程日记 > 正文

使用 dockerfile 创建镜像

dockerfile 是一个文本格式的配置文件,可以使用 dockerfile 快速创建自定义的镜像。

dockerfile 一般包含4部分信息:基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令

创建镜像命令:docker build [选项] 路径,会读取指定路径下(包括子目录)的dockerfile,并将该路径下所有内容发送给 docker 服务端,有服务端来创建镜像。因此最好将dockerfile 单独放到一个文件夹下。可以使用 -t 选项来指定生成的镜像标签。

1.1 第一条语句必须是FROM,可以是现成的基础镜像。比较特殊的是 scratch ,他并不实际存在,是一个空白镜像。接下来所写的指令将作为镜像的第一层开始存在。

1.2 RUN指令,用来执行命令行命令。有两种格式

1.2.1 shell 格式:就像直接在命令行中输入的命令一样,比如:

RUN echo "<html> <body><h1> hello Docker! </h1></body> </html>" > /usr/share/nginx/html/index.html

将语句打印到文件中

1.2.2 exec 格式:RUN [ "可执行文件", "参数1", " 参数2"]

1.3 Dockerfile 支持 shell 行尾添加 "\" 命令换行方式,以及行首 "#" 进行注释的格式

说明:在构建镜像后将不需要的东西删除掉,减少容器容量。每执行一条指令会构建一个应用层。

1 例子:创建 mysql5.7 版本的镜像,不同于官网的mysql5.7 版本是官网使用字符集是 latin1,对于中文用户来说很是不便。

下面是官网docker 镜像的字符集

接下来创建自己的 Dockerfile 和 my.cnf 配置文件

1.1 新建一个目录用于存放dockerfile

mkdir -p dockerfile/mysql5.7

进入配置目录

cd dockerfile/mysql5.7

新建所需文件

touch my.conf Dockerfile

1.2 编辑 my.cnf文件,是参照了官网的配置文件后,仅修改了字符编码。

vi my.cnf

内容如下:

//my.cnf
# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
[client]# pipe
# socket=0.0
port=3306[mysql]
default-character-set=utf8# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
# server_type=3
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306# The default character set that will be used when a new schema or table is
# created and no character set is defined
character-set-server=utf8pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
datadir        = /var/lib/mysql
#log-error    = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address    = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

1.3 编辑 Dockerfile,删除默认配置文件,将自定义配置文件复制到配置文件夹中

//Dockerfile
FROM mysql:5.7
RUN rm -rf /etc/mysql
RUN mkdir /etc/mysql
COPY my.cnf /etc/mysql/CMD ["mysqld", "--character-set-server=utf8", "--collation-server=utf8_unicode_ci"]

1.4 进行docker构建

ls
Dockerfile  my.confdocker build . -t mysql5.7

此时可以看到构建的image

1.5 进行测试,

运行容器

docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

运行后进入容器可以看到字符编码

构建成功!!!

相关文章:

wireshark的使用教程--用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的

wireshark的使用教程 --用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的 wireshark是一款抓包软件&#xff0c;比较易用&#xff0c;在平常可以利用它抓包&#xff0c;分析协议或者监控网络&#xff0c;是一个比较好的工具&#xff0c;因为最近在研究这个&#xff0c;…

设计师你们还坐的住吗?2021 PS 进入人工智能 P 图时代

与每年一样&#xff0c;Adobe 的 Max 2021 活动顺利开展。本次活动主要是以产品展示以及其他创新产品。 这个活动最有趣的特点之一是&#xff0c;Adobe 不断将人工智能集成到其产品或是功能中。在过去的几年里&#xff0c;人工智能一直是这家公司不断探索的领域。 与许多其他公…

图像处理之噪声---椒盐,白噪声,高斯噪声三种不同噪声的区别

白噪声是指功率谱密度在整个频域内均匀分布的噪声。 所有频率具有相同能量的随机噪声称为白噪声。白噪声或白杂讯&#xff0c;是一种功率频谱密度为常数的随机信号或随机过程。换句话说&#xff0c;此信号在各个频段上的功率是一样的&#xff0c;由于白光是由各种频率&#xff…

发现一个“佛系记账本”

因为这是一款微信小程序&#xff0c;张小龙大力推崇的“用完即走”完美地适合记账应用。 不用下载、不用安装、不用注册、不用各种授权&#xff0c;只要从微信进入&#xff0c;就能记账&#xff0c;账本只与微信关联。 换手机、换PAD都无所谓&#xff0c;只要登录微信&#xff…

YSLOW法则中,为什么yahoo推荐用GET代替POST?

原文&#xff1a;http://www.cnxct.com/use-get-for-ajax-requests-why/ 背景&#xff1a;上上周五&#xff0c;公司前端工程师培训&#xff0c;提到前端优化的一些技巧&#xff0c;当然不能少了yahoo yslow的优化法则。其中有这么一条“Use GET for AJAX Requests”&#xff0…

Python 多进程、协程异步抓取英雄联盟皮肤并保存在本地

作者 | 俊欣来源 | 关于数据分析与可视化就在11月7日晚间&#xff0c;《英雄联盟》S11赛季全球总决赛决斗&#xff0c;在冰岛拉开“帷幕”&#xff0c;同时面向全球直播。在经过了5个小时的鏖战&#xff0c;EDG战队最终以3:2战胜来自韩国LCK赛区的DK战队&#xff0c;获得俱乐部…

QT 5.4.1 for Android Ubuntu QtWebView Demo

QT 5.4.1 for Android Ubuntu QtWebView Demo 2015-5-15 目录 一、说明&#xff1a; 二、参考文章&#xff1a; 三、QtWebView Demo在哪里&#xff1f; 四、Qt Creator 3.4.0能打开QtWebView Demo&#xff1f; 五、Qt Creator如何生成AndroidManifest.xml&#xff1f; 一、…

硬改TP-Link WR841N v8刷breed和OpenWrt

找到了以前的路由器&#xff0c;想刷OpenWrt但版本是TP-Link的WR841N v8版&#xff0c;上网查过才知道&#xff0c;是专门面向国内发布的严重缩水版国际版的Flash是4M&#xff0c;内存RAM是32M&#xff0c;国内版是2M/16M&#xff0c;不过论坛上也有人说到手的Flash是4M的。(Op…

Facebook的实时Hadoop系统

原文地址&#xff1a; http://blog.solrex.org/articles/facebook-realtime-hadoop-system.html作者&#xff1a;杨文博Facebook 在今年六月 SIGMOD 2011 上发表了一篇名为“Apache Hadoop Goes Realtime at Facebook”的会议论文 (pdf)&#xff0c;介绍了 Facebook 为了打造一…

Ka的回溯编程练习 Part1|整划什么的。。

1 #include<stdio.h>2 int search(int s,int t);3 void op(int k);4 int res[1001]{1},n;5 int main()6 {7 //scanf("%d",&n);8 n10;9 search(n,1); 10 return 0; 11 } 12 int search(int s,int t) //当前数的大小s&#xff0c;个数n 13 …

开发者关心的十个数据库技术问题

作者 | 雷海林 责编 | 田玮靖出品 | 《新程序员》如今&#xff0c;数据库越来越受到业界的广泛关注&#xff0c;许多高校毕业生及资深技术人也逐渐投身于数据库产业。《新程序员002》经过用户、专家调研&#xff0c;收集汇总了十个开发者关心的数据库技术问题&#xff0c…

使用T-SQL语句操作数据表-更新数据

使用update语句更新表中的数据。也就是修改表中的数据。update语法格式&#xff1a;update <表名> set <列名更新值> [where <更新条件>] 解释&#xff1a;update 是更新数据名&#xff0c; 表明是更新数据set 是必要的&#xff0c; 后面可以紧随多个数据列的…

Category Archives: Linux

原文地址&#xff1a;http://blog.solrex.org/articles/solrex-linux-cheatsheet.html Cheatsheet&#xff1a;原意是考试的时候带的小抄&#xff0c;所以说是 cheat&#xff08;作弊&#xff09; sheet。在计算机科学领域里&#xff0c;主要是指记录一些难记命令或者操作的快查…

利用 OpenCV+ConvNets 检测几何图形

作者 | 小白 来源 | 小白学视觉 导读 人工智能领域中增长最快的子领域之一是自然语言处理&#xff08;NLP&#xff09;&#xff0c;它处理计算机与人类&#xff08;自然&#xff09;语言之间的交互&#xff0c;特别是如何编程计算机以处理和理解大量自然语言数据。 自然语言处理…

《Linux实践及应用》

2019独角兽企业重金招聘Python工程师标准>>> 《Linux实践及应用》 本书以RedHat 9.0为蓝本&#xff0c;系统地介绍Linux的基础知识、Linux系统的安装与配置、常用命令&#xff0c;以及如何进行Linux系统管理和基本的网络服务设置&#xff08;包括如何设置DNS服务器、…

找不到包含 OwinStartupAttribute 的程序集

2019独角兽企业重金招聘Python工程师标准>>> 尝试加载应用时出现了以下错误。 找不到包含 OwinStartupAttribute 的程序集。找不到包含 Startup 或 [AssemblyName].Startup 类的程序集。 若要禁用 OWIN 启动发现&#xff0c;请在 web.config 中为 appSetting owin:A…

Imagination 推新款GPU IP,首次实现桌面级光线追踪效果

游戏界被炒得最热的概念可能就是光线追踪技术了&#xff0c;不仅仅是PC端的游戏。光线追踪所展示出来的画面效果也确实惊艳&#xff0c;可以让我们感叹到图像技术达到的一个新高度。 但是实际上&#xff0c;光线追踪并不是一个新技术。10年前&#xff0c;光追就是游戏玩家茶余…

percent之集合

2019独角兽企业重金招聘Python工程师标准>>> 这个留到明天再来写吧,今天把hub剩下的坑填掉. 转载于:https://my.oschina.net/u/2011113/blog/416458

Mr. Process的一生-Linux内核的社会视角 (2)启动

原文地址&#xff1a; http://www.manio.org/cn/startup-of-linux-view-of-society.html 其实这才应该是这一系列文章的第一节&#xff0c;因为这篇文章讲的是盘古开天地的事。话说Mr. Process是一个现代人&#xff0c;但是&#xff0c;只要是人&#xff0c;总该有个祖先。人们…

深入研究ConcurrentHashMap 源码从7到8的变迁

ConcurrentHashMap是线程安全且高效的HashMap 1 为什么要使用ConcurrentHashMap 线程不安全的HashMap HashMap是Java中最常用的一个Map类&#xff0c;性能好、速度快&#xff0c;但不能保证线程安全&#xff0c;它可用null作为key/value HashMap的线程不安全主要体现在resize时…

IANA定义的常见服务的端口号列表

最新明细&#xff1a;http://www.iana.org/assignments/port-numbers 几个重要常见端口&#xff1a; 21 FTP 22 SSH 80 HTTP 443 HTTPS 1433 MSSQLserver 3306 MySQL 11211 memcached

oracel 服务详细介绍

中的方法成功安装Oracle 11g后&#xff0c;共有7个服务&#xff0c; 这七个服务的含义分别为&#xff1a; 1. Oracle ORCL VSS Writer Service&#xff1a; Oracle卷映射拷贝写入服务&#xff0c;VSS&#xff08;Volume Shadow Copy Service&#xff09;能够让存储基础设备&…

使用 Python 开发一个恐龙跑跑小游戏,玩起来

作者 | 周萝卜 来源 | 萝卜大杂烩 相信很多人都玩过 chrome 浏览器上提供的恐龙跑跑游戏&#xff0c;在我们断网或者直接在浏览器输入地址“chrome://dino/”都可以进入游戏 今天我们就是用 Python 来制作一个类似的小游戏 素材准备 首先我们准备下游戏所需的素材&#xff0c;比…

了解和入门注解的应用

2019独角兽企业重金招聘Python工程师标准>>> 一、概述 jdk的java.lang包中提供的最基本的annotation 1、SuppressWarnings("deprecation") package staticimport.annotation;SuppressWarnings("deprecation") public class AnnotationTest {pub…

Linux下开发优秀链接

不得不说CSDN博客这次改版变化很大&#xff0c;但是友情链接功能太脆弱了。 只有自己写个帖子&#xff0c;不断更新吧。Linux基础 Linux内核mirrors163LVS中文站点 孙海龙 howtoforge.com 地中海东岸的蒲公英 服务器运维与网站架构 Nginx中文维基 ACME Bory.Chan Tim[后端技术]…

Q 版老黄带着硬核技术再登场,有点可爱,很有东西

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 看到下面这个老黄是不是觉得很Q~ 11月9日&#xff0c;GTC 大会再次来了&#xff0c;英伟达创始人兼CEO黄仁勋再次从自己虚拟厨房走出来。 本次 GTC 大会都有哪些亮点呢&#xff1f; Q 版黄仁勋 英伟达展…

linux第七章《档案与目录管理》重点回顾

转载于:https://www.cnblogs.com/wubingshenyin/p/4514969.html

Effective java 43返回零长度的数组或者集合而不是null

转载于:https://www.cnblogs.com/limingxian537423/p/8391285.html

《Unix网络编程卷1-套接字联网API》第一个例子编译 不通过问题解决

《Unix网络编程卷1-套接字联网API》是本好书。 但是第一个例子不是很好编译。 需要如下步骤&#xff1a; 本人机器CentOS 5.4 1.下载源码 unpv13e解压到任意目录 然后按其readme文件操作./configure # try to figure out all implementation differencescd lib # bu…

angularJs的学习笔记-01(创建项目)

1&#xff0c;进入angular-phonecat目录 执行下面命令 git checkout -f step-0 然后访问 http://localhost:8000/app/ 页面出现 “Nothing here yet!” 现在就可以自己创建HTML&#xff0c;编写angular了 app/index.html <!doctype html> <html lang"en"…