Docker课堂实验手册(三) - 构建自己的镜像

在本次实验的目的是学习构建自己的镜像。

使用 Commit 方法建立镜像

  1. 启动一个容器
1
docker run -t -i alpine /bin/sh
  1. 在容器中安装nginx

在容器中执行:

1
apk --update add nginx
  1. 使用 commit 建立进行

现在我们已经在容器中安装了nginx, 如果想要重用这套环境就可以把它存为镜像,使用 commit 命令来完成这个操作:

commit命令的格式为:

1
docker commit <容器id> <镜像名称>[:标签]

在案例中,假设将要保存的镜像命名为: ubuntu-nginx, 则命令依次为:

查看容器id

1
docker ps -a

系统显示:

1
2
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
9d8e45d95d98 alpine "/bin/sh" 3 minutes ago Exited (0) 14 seconds ago optimistic_brattain

这里,”9d8e45d95d98” 就是我们后面命令要用到的容器id

在执行 commit 命令:

1
docker commit 9d8e45d95d98 alpine-nginx:1.0

再执行 images 命令,就可以看到新建的这个镜像了。

1
docker images

系统显示

1
2
3
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine-nginx 1.0 911b374e4d62 26 seconds ago 8.44MB
alpine latest 961769676411 2 weeks ago 5.58MB

使用 Dockerfile 建立镜像

  1. 新建一个 Dockerfile 文件,加入一下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FROM alpine:3.8

MAINTAINER dev-team

RUN echo http://mirrors.ustc.edu.cn/alpine/v3.8/main > /etc/apk/repositories && \
echo http://mirrors.ustc.edu.cn/alpine/v3.8/community >> /etc/apk/repositories

RUN apk update \
&& apk upgrade \
&& apk add --no-cache bash \
bash-doc \
bash-completion \
openrc \
vim \
&& rm -rf /var/cache/apk/* \
&& /bin/bash
  1. 运行 build 命令构建镜像

build 命令的格式如下:

1
docker build -t=“<镜像名>[:标签]”

假设要构建的镜像名为: “alpine-bash”,则命令为:

1
docker build -t="alpine-bash:1.0" .

注意,不要忘记最后的点号

用 Dockerfile 构建包含nginx的alpine镜像

如果用 Dockerfile 来构建一个包含nginx的docker镜像,则可以按如下步骤构建:

  1. 新建一个 Dockerfile 文件

文件内容如下:

1
2
3
4
5
6
7
8
FROM alpine:latest
MAINTAINER ee900222 ee900222@gmail.com
 
RUN apk update && apk add nginx
 
EXPOSE 80
 
CMD ["nginx""-g""daemon off;"]
  1. 执行 build 命令构建
1
docker build -t="alpine-nginx:1.0" .
  1. 运行 alpine-nginx

执行以下命令:

1
docker run --name nginx-srv -d -p 80:80 alpine-nginx:1.0

然后就可以使用浏览器访问该nginx服务器了。

本文标题:Docker课堂实验手册(三) - 构建自己的镜像

文章作者:梅老师

发布时间:2019年09月05日 - 09:09

最后更新:2020年09月16日 - 08:09

原始链接:https://www.mls-tech.info/docker/docker-practice-manual-3/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。