在测试以及开源工具使用中,docker的便捷越来越成为快速部署的选择,那我们怎么构建自己的docker镜像。
构建Docker镜像有以下两种方法:
- 使用docker commit命令。
- 使用docker build命令和 Dockerfile 文件
docker commit命令
首先我们在本地拉取ubuntu镜像作为基础的镜像环境。
如果我们在拉取的ubuntu镜像上安装 nginx,使用
docker run -it 镜像名 /bin/bash
这样进入需要修改的镜像内部。
首先按照一般操作步骤,
apt-get update
apt-get -y install nginx
等待构建结束后,使用exit退出,保存镜像,避免镜像内容丢失。
docker commit 修改的镜像id 用户名/仓库名
结束后便构建了一个设定好的镜像,如下所示。
如果需要上传镜像仓库,在https://hub.docker.com/注册登陆创建仓库即可,然后使用docker login登陆,此处使用的是命令行参数直接登陆。
执行:docker push 用户名/仓库名:标签
在hub.docker上就可以看到镜像信息了:
如需运行构建的docker
docker run -d -p 80 --name web_web misakiyui/web nginx -g "daemon off;"
–name: 容器名
nginx -g “daemon off;” 表示在镜像内运行的命令,在前台开启一个nginx进程
访问映射端口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了 。