前言

最近在研究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的更多相关文章

  1. 使用 docker 创建自己的镜像

    docker run 命令 镜像(image):An image is a filesystem and parameters to use at runtime. It doesn't have s ...

  2. docker创建mysql5.7.22并配置主从

    debian系统 安装docker (参考网址:https://cloud.tencent.com/developer/article/1360720) 1.更新现有的包列表 sudo apt upd ...

  3. docker 创建新的镜像到私有仓库

    docker:/data# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd6db4127a9e centos &q ...

  4. docker配置nginx做反向代理管理tomcat应用

    由于业务开始复杂,单一tomcat已经不足以满足业务需求,多tomcat部署起来不方便而且面临域名解析问题,因此开始增加反向代理,由于docker的易用性,便使用docker管理各个应用. docke ...

  5. Docker入门(windows版),利用Docker创建一个Hello World的web项目

    Docker 当大家点开这篇博客的时候,相信大家对docker多多少少也有些认识了,最近学习docker这门技术,略微有些心得,写篇文章记录一下学习过程并帮大家跳过一些坑. docker的核心有两个, ...

  6. docker完整配置nginx+php+mysql

    首先了解一个方法: 使用docker exec进入Docker容器 docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用: s ...

  7. Docker的安装和镜像管理并利用Docker容器实现nginx的负载均衡、动静分离

    Docker的安装 一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化 ...

  8. 创建新镜像-从已创建的容器中更新镜像并提交镜像(以Nginx为例)

    目标:现在我们主要是修改nginx的index.html,然后做一个新镜像 1.基于nginx:1.12运行一个容器 docker run -d -p 8080:80 --name nginx ngi ...

  9. Docker 中如何安装配置 Nginx

    拉取 nginx 最新版镜像,然后简单启动一个 nginx 容器: docker pull nginx:latest docker run --name nginx01 -d -p 80:80 ngi ...

随机推荐

  1. tomcat7.0.8的高级应用-apr1.4.2安装

    一 windows下安装 直接拷贝tcnative-1.dll到TOMCAT_HOME/bin目录下,启动即可 下载地址 http://archive.apache.org/dist/tomcat/t ...

  2. 分布式消息系统Kafka初步(一) (赞)

    终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到.从这一篇开始分布式消息系统的入门. 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到 ...

  3. c# webBrowser下载图片

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { ...

  4. The 12 Most Controversial Facts In Mathematics

    Walter Hickey / BI Walter Hickey/BI Walter Hickey/BI Walter Hickey/BI Walter Hickey/BI Walter Hickey ...

  5. MySQL命令行查询结果中文显示乱码

    数据库编码格式为utf8,表和字段也都是utf8,存进去的格式是utf-8 但是用命令行工具查询命令select * from 表名; 查询出来的中文是乱码 原因:MySQL客户端根本就不能以utf8 ...

  6. 我所遭遇过的游戏中间件---SpeedTree

    我所遭遇过的游戏中间件---SpeedTree SpeedTree是一个专门用于渲染植被的中间件,并提供了一套完善的植物编辑工具.在它官方提供的DEMO中,你会看到高度逼真的树木和植物,在风的影响下树 ...

  7. HDU4183 起点到终点再到起点 除起点每点仅经过一次 网络流

    题意: T个测试数据 n个圆 下面 fre x y r 表示圆的频率 坐标和半径 要求: 从频率为400(最小的) 圆 走到频率为789(最大)的圆,再走回来,除起点每个点只能经过一次 问这样的路径是 ...

  8. 错误: 找不到或无法加载主类 Files\red5-server ,原因与解决办法

    因为你把 red5放到了 Program Files 下,而Program Files 中间有个空格,启动路径不允许有空格,换个没空格的路径就OK啦

  9. 拍案惊奇!9款神奇的jQuery/CSS3经典插件

    款非常给力的jQuery/CSS3经典插件,插件包括CSS3图片特效.jQuery动画菜单.jQuery时尚登录表单等,一起来看看这些jQuery插件. .CSS3图片重力感应特效 这是一款应用重力感 ...

  10. HttpWebRequest的使用

    HttpWebRequest类主要利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两种方式来对数据进行获取和提交.下面对这两种方式进行一下说明: GET 方式 GET 方式通过在网络 ...