在测试以及开源工具使用中,docker的便捷越来越成为快速部署的选择,那我们怎么构建自己的docker镜像。

构建Docker镜像有以下两种方法:

  • 使用docker commit命令。
  • 使用docker build命令和 Dockerfile 文件

docker commit命令

首先我们在本地拉取ubuntu镜像作为基础的镜像环境。

1537841397553

如果我们在拉取的ubuntu镜像上安装 nginx,使用

docker run -it 镜像名 /bin/bash

这样进入需要修改的镜像内部。

首先按照一般操作步骤,

apt-get update
apt-get -y install nginx

等待构建结束后,使用exit退出,保存镜像,避免镜像内容丢失。

docker commit 修改的镜像id 用户名/仓库名   

结束后便构建了一个设定好的镜像,如下所示。

1537847890986

如果需要上传镜像仓库,在https://hub.docker.com/注册登陆创建仓库即可,然后使用docker login登陆,此处使用的是命令行参数直接登陆。

1537842447299

执行:docker push 用户名/仓库名:标签

在hub.docker上就可以看到镜像信息了:

1537848219021

如需运行构建的docker

docker run -d -p 80 --name web_web misakiyui/web nginx -g "daemon off;"

–name: 容器名

nginx -g “daemon off;” 表示在镜像内运行的命令,在前台开启一个nginx进程

1537857107741

访问映射端口32768则可以看到安装的nginx了。

Dockerfile

使用docker commit现在已经不推荐,推荐使用更为灵活的Dockerfile来构建镜像,如下Dockerfile,同样是在ubuntu下构建nginx

FROM ubuntu:18.04
MAINTAINER misaki
RUN apt-get update && apt-get -y install nginx
RUN echo "hello world" > /var/www/html/index.nginx-debian.html
EXPOSE 80

新建目录web,此目录就是构建环境目录。在Dockerfile中写入如下命令,FROM指构建环境,这里选用ubuntu 18.04版本,必须为第一行信息,注意这里都要小写,MAINTAINER指作者信息,RUN指在构建环境中需要运行的命令,每一个RUN都意味着建立一层,层数过多增加构建部署时间,也容易出错,所以尽量使用&&,在一层中构建命令。EXPOSE指应用程序使用容器的指定端口,设为80。也就是Dockerfile其实就是安装的每一条命令都写在一个文件内,这样运行后,程序自动的执行安装更新配置等等。

运行 docker run -t="misakiyui/web" . (点是必须的)开始构建镜像

构建完成后再docker images中便可以看到设定的镜像了

运行 docker run -d -p 80 --name web_web misakiyui/web nginx -g "daemon off;" 开启镜像

这时候查看映射到本地的端口docker ps,本地映射32772端口,访问后就可以看到修改的信息和nginx了 。

1537865562767





# web安全  

tocToc: