docker创建自己的镜像并配置nginx

Posted 幸福小聪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker创建自己的镜像并配置nginx相关的知识,希望对你有一定的参考价值。

前言

最近在研究docker,记录一下如何创建一个属于自己的镜像

本次使用linux版本为centos7.4(centos6也可以使用docker,只不过有部分功能只有7才有)

本次创建的镜像为centos系统中搭建nginx

一、统一环境

系统版本

[root@docker ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

内核版本

[root@docker ~]# uname -r
3.10.0-693.2.2.el7.x86_64

selinux关闭

[root@docker ~]# getenforce 
Disabled

关闭防火墙

[root@docker ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

配置yum源(这里可以保留自己需要的yum源,自己视情况而定)

[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# rm -rf *
[root@docker yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@docker yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

二、开始安装并配置docker

下载并设置开机自启

[root@docker ~]# yum install -y docker
[root@docker ~]# systemctl enable docker.service

修改docker镜像源(默认使用国外的,改为国内阿里,速度会提升不少)

有两种方法,效果相同,在这里共同展示

方法一:

vim /usr/lib/systemd/system/docker.service(默认配置文件)
[service]
...............
ExecStart=/usr/bin/dockerd-current --registry-mirror=阿里云镜像加速地址 \\
找到对应行,添加镜像加速器

方法二:

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-\'EOF\'
{
  "registry-mirrors": ["阿里云镜像加速地址"]
}
EOF
systemctl daemon-reload
systemctl restart docker

此方法为阿里云官方提供

三、启动docker并查看其状态

重新加载docker参数

[root@docker ~]# systemctl daemon-reload

启动docker并查看状态

[root@docker ~]# systemctl start docker
[root@docker ~]# systemctl status docker

四、下载官方系统centos镜像并查看

[root@docker ~]# docker pull centos
[root@docker yum.repos.d]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              49f7960eb7e4        6 weeks ago         200 MB

五、开始镜像制作

启动并进入到镜像中

[root@docker ~]# docker run -it --name mynginx centos /bin/bash
[root@a8882e2ef0d9 /]#

镜像定制化(进入之后的操作就跟正常在centos中操作是一样的)

[root@a8882e2ef0d9 /]# yum install -y wget   #默认没有get所以需要安装
#与之前环境统一一样的操作
[root@a8882e2ef0d9 /]# cd /etc/yum.repos.d
[root@a8882e2ef0d9 yum.repos.d]# rm -f *
[root@a8882e2ef0d9 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@a8882e2ef0d9 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

开始安装nginx

[root@a8882e2ef0d9 ~]# yum install -y nginx #默认的网络连接方式是可以连接外网的
[root@a8882e2ef0d9 ~]# vim /etc/nginx/nginx.conf #修改参数
找到user nginx;,在他下面加上一行 daemon off;(禁止后台运行,docker不允许nginx后台运行)
[root@a8882e2ef0d9 ~]# nginx -t    #检查nginx配置文件语法
[root@a8882e2ef0d9 ~]# nginx    #启动ngin

检查结果

正常在nginx命令运行后,界面是夯住的,所以另外打开一个ssh渠道执行
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
860e2e2f3d93        centos              "/bin/bash"         3 minutes ago       Up 3 minutes                            mynginx

这样的结果证明是没问题的

六、提交镜像并查看

[root@docker ~]# docker commit -m "add new nginx docker images" mynginx murry/nginx:v1
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
murry/nginx         v1                  b96902fb932a        25 hours ago        397 MB
docker.io/centos    latest              49f7960eb7e4        6 weeks ago         200 MB

到这里,自己的镜像就已经提交到本地

七、测试nginx

运行自己的镜像

docker run -p 80:80 --name web_nginx b96902fb932a nginx  #-p表示端口映射,后面那一串字符代表镜像id

浏览器访问服务器IP地址

出现此界面证明nginx配置成功

八、上传到自己的docker hub中

如果小伙伴想要把自己辛辛苦苦做出来的镜像上传到docker hub可以自己先创建一个自己的docker id

在服务器上

[root@docker ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don\'t have a Docker ID, head over to https://hub.docker.com to create one.
Username : murry
Password: 
Login Succeeded

登陆成功后

[root@docker ~]# docker tag 镜像ID docker.io/用户名/镜像名
[root@docker ~]# docker push docker.io/用户名/镜像名

这样就可以在docker hub官网上看到自己的作品啦

 

番外:本篇博客部分技术支持来自我的一位好友:http://www.cnblogs.com/zhangzhifan1208/

其中记录不少炫酷的知识,欢迎大家查阅

 

以上是关于docker创建自己的镜像并配置nginx的主要内容,如果未能解决你的问题,请参考以下文章

Docker中运行nginx并挂载本地目录到镜像中

Docker-容器服务 Container Service04(构建镜像+仓库配置)

Docker安装nginx并使用数据卷配置同步映射

Docker-应用部署-部署Nginx

Docker实战:Docker安装nginx并配置SSL

47-Docker-Dockerfile镜像创建自动化生产案例