这是一篇零基础教程,分分钟教会你创建自己的Docker镜像,并对Docker的整个运行流程有基本的了解。
一. Dockerfile文件编写
要创建Docker的镜像,最基础的文件就是 Dockerfile。Docker通过解析Dockerfile文件来生成镜像;
首先需要新建一个目录,为了和其他项目隔离,我们暂且创建一个local目录,之后所有的操作都在该目录下进行;然后在该目录下创建Dockerfile(文件名就叫Dockerfile), Dockerfile内容如下:
1 | ############################################################ |
如下代码需要特别说明:
1 | RUN ln -sf /dev/stdout /var/log/nginx/access.log \ |
所有进程都拥有三个数据流设备分别是标准输出stdout、标准输入stdin和标准错误stderr,Nginx进程也不例外。/dev/stdout 是Linux中标准的输出设备,/dev/stderr 是标准的错误输出设备,这里的意思是将所有的错误输出到error.log文件,将所有的请求输出到access.log文件。
二. Docker Images生成
保存Dockerfile文件,然后在当前目录执行如下命令
1 | #arm_nginx为镜像的名字,可自定义 |
该命令会自动在当前目录下寻找Dockerfile文件,Docker会先下载我们指定的 FROM resin/rpi-raspbian:latest(linux内核版本)镜像,然后通过该镜像安装Nginx容器。
之后运行: docker images 将能看到生成的镜像;
接着我们尝试启动Ngxin,启动命令如下:
1 | docker run -d -it -p 80:80 \ |
运行完该命令后我们会发现在当前目录生成了三个文件夹(怕麻烦请从这里clone代码 laynefyc/arm-nginx ),分别为:
- www 网站根目录,需要在该目录下新建一个index.html文件;
- logs 日志目录,其中有定义的access.log文件和error.log文件
config 配置目录,需要在该目录下新建一个server文件,内容如下:
1
2
3
4
5
6server {
listen 80;
root /www;
index index.html index.htm;
server_name localhost;
}
由于nginx加载配置文件需要重启,所以我们需要重启Ngxin再运行上面的启动命令;非常重要的一点,一定要在『当前local』目录运行nginx启动命令,不然浏览器访问会失败;
三. Docker Images上传
先到 https://hub.docker.com 注册一个帐号,并且新建一个 repository命名为 account/arm_nginx(比如:laynefyc/arm_nginx)
然后运行如下上传命令:
1 | $ docker login |
最后看到如下链接:laynefyc/arm_nginx
PS:给镜像打个标签
1 | docker tag d217a603c7d0 laynefyc/arm_nginx:v1.0.0 |
d217a603c7d0为镜像编号,v1.0.0为镜像版本;效果看这里
四. 总结
Docker能大大的节省运维成本,谷歌最早发布Docker时就预言多年后Docker将让谷歌GAE超越亚马逊AWS,谷歌大法诚不欺我Docker的应用已经相当广泛。