使用 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.
进入配置目录
cd dockerfile/mysql5.
新建所需文件
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= [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=
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port= # 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=utf8 pid-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=
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.conf docker build . -t mysql5.
此时可以看到构建的image
1.5 进行测试,
运行容器
docker run --name some-mysql -p : -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
运行后进入容器可以看到字符编码
构建成功!!!
使用 dockerfile 创建镜像的更多相关文章
- docker——Dockerfile创建镜像
写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境 ...
- Dockerfile创建镜像
Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像. Dockerfile由一行行命令语句组成,并且支持易#开头的注释行. 一般而言Dockerfil ...
- docker常用命令、镜像命令、容器命令、数据卷,使用dockerFile创建镜像,dockefile的语法规则。
一.docker常用命令? 1. 常用帮助命令 1.1 docker的信息以及版本号 /* docker info 查看docker的信息 images2 docker本身就是一个镜像. docker ...
- 如何用Dockerfile创建镜像
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p/5181222.html 创建镜像的目的 首先说DockerHub或其它一些镜像仓库已经提供了够多的镜像,有 ...
- docker学习笔记6:利用dockerfile创建镜像介绍(生成简单web服务器镜像)
本文介绍如何利用dockerfile来创建镜像.下面介绍具体的操作过程: 一.创建构建环境 操作示例如下: xxx@ubuntu:~$ pwd /home/xxx xxx@ubuntu:~$ mkdi ...
- 使用Dockerfile创建镜像
Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像. 一.基本结构 Dockerfile由一行行命令语句组成,并且支持以#开头的注释行. 一般而言,D ...
- [转]Docker基础-使用Dockerfile创建镜像
本文转自:https://www.cnblogs.com/jie-fang/p/7927643.html 1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # T ...
- Docker基础-使用Dockerfile创建镜像
1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - ED ...
- Docker学习笔记之通过 Dockerfile 创建镜像
0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...
- docker Dockerfile 创建镜像
Docker 组件 1. docker client : docker的客户端 2. docker server : docker daemon的主要组成部分,接受用户通过docker client发 ...
随机推荐
- CentOS 7.0 安装 ZCS 8.6.0
简介 Zimbra的核心产品是Zimbra协作套件(Zimbra Collaboration Suite,简称ZCS).除了它的核心功能是电子邮件和日程安排服务器,当然还包括许多其它的功能,就象是下一 ...
- BSTR
BSTR A BSTR (Basic string or binary string) is a string data type that is used by COM, Automation, a ...
- 从头认识java-特辑-你不知道的main函数
这一章节我们来讨论一下main函数. 对于这个函数大家都不陌生,并且都习以为常.可是当中有一些东西,还是值得我们去总结的. 1.普通的main package com.ray.test; public ...
- 以Settings.APPLICATION_DEVELOPMENT_SETTINGS打开开发人员面板出错总结
近期遇到了一个问题,感觉须要记录一下. 要打开开发人员面板,之前的代码例如以下: Intent intent = new Intent(Settings.ACTION_APPLICATION_DEVE ...
- Activex打包于发布完整版---ActiveX打包
前面介绍了数字证书的原理与制作:http://blog.csdn.net/jiangtongcn/article/details/13508365,下面来看一下ActiveX组件的打包. 我现在有一个 ...
- JAVA中AES对称加密和解密
AES对称加密和解密 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingExce ...
- MySQL常见架构的应用
MySQL 的架构设计 MySQL 架构一定要结合前台业务来设计.优化,所以不管是哪种架构.根据业务要求组合成符合需求的即是最好的.不能泛泛而谈同时.也必须注意数据的安全(如ipsec,ssh,vpn ...
- cookie 设置有效期 检测cookie
设置cookie 函数直接上代码: function setCookie(name, value, days) { //设置cookie var d = new Date(); d.setTime(d ...
- python之函数用法all
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法all #all(iterable) #说明:如果iterable的所有元素不为0.' ...
- 九度OJ 1183 守形数 (模拟)
题目1183:守形数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2663 解决:1424 题目描写叙述: 守形数是这样一种整数.它的平方的低位部分等于它本身. 比方25的平方是625. ...