使用dockerfile构建docker镜像快速上手指南

简介

在了解了docker的基本使用方法后,我们可以通过容器快速准备环境并部署服务。
有些重复性的工作,例如:手动配置一些配置项,安装特定的软件包,使用命令或脚本启动特定服务等等。为了解决这些通用或者重复性的事情,我们可以通过构建一个自己个性化的镜像来固化下来这些环境信息。

本文将简单介绍使用dockerfile构建docker镜像的基本使用方法。
本文以使用ubuntu镜像为例说明如何根据已有的镜像为基础构建自己需要的镜像。

本例中将演示以Ubuntu 16.04为基础,安装ssh, jdk, vim等软件。

安装包准备

  • jdk-8u77-linux-x64.tar.gz

目录结构及Dockerfile

假如工作目录在:~/dockerfiles/my-ubuntu
此目录中的结构如下:

1
2
3
|-- Dockerfile
`-- files
`-- jdk-8u77-linux-x64.tar.gz

其中Dockerfile中的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
FROM ubuntu:16.04

LABEL maintainer="yancai915@gmail.com"
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
ENV TZ Asia/Shanghai

# 设置apt-get源
RUN sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list \
&& sed -i "s/security.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list \
&& apt-get update

# 安装常用工具 设置SSH
RUN apt-get install -y openssh-server vim telnet sudo \
&& rm /etc/ssh/ssh_host_dsa_key -rf \
&& rm /etc/ssh/ssh_host_rsa_key -rf \
&& ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key \
&& ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key \
&& useradd guest \
&& echo "guest:guest!@#" | chpasswd \
&& echo "guest ALL=(ALL) ALL" >> /etc/sudoers \
&& echo "root:123456" | chpasswd \
&& sed -i "s/PermitRootLogin\ without-password/PermitRootLogin\ yes/g" /etc/ssh/sshd_config

# 修改vim配置
RUN sed -i '1s/^/set encoding=utf-8\n/' /etc/vim/vimrc \
&& echo "set hls" >> /etc/vim/vimrc \
&& echo "set expandtab" >> /etc/vim/vimrc \
&& echo "set sw=4" >> /etc/vim/vimrc \
&& echo "set tabstop=4" >> /etc/vim/vimrc

RUN mkdir /usr/java
# 安装jdk
ADD files/jdk-8u77-linux-x64.tar.gz /usr/java
RUN echo "export JAVA_HOME=/usr/java/jdk1.8.0_77" >> /etc/profile \
&& echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile \
&& echo "export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> /etc/profile

RUN mkdir /var/run/sshd
EXPOSE 22 8080

ENTRYPOINT /usr/sbin/sshd -D

构建镜像

1
2
3
4
cd ~/dockerfiles/my-ubuntu

# build镜像,注意最后有一个英文半角点号
docker build --tag="my-ubuntu:1.0" .

稍等片刻后构建完成

查询镜像

使用如下命令可以看到已经构建好的镜像

1
docker images

例如:

1
2
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
my-ubuntu 1.0 1979d1447f6d 2 minutes ago 612 MB

0%