如果我们需要在Docker环境下部署tomcat、redis、mysql、nginx、php等应用服务环境,有下面三种方法:

1,根据系统镜像创建Docker容器,这时容器就相当于是一个虚拟机,进入容器内部署应用环境。然后将这种应用容器提交为新的镜像
2,直接通过docker pull拉取别人提交好的tomcat、nginx等应用程序镜像,然后基于这些镜像去创建容器。
3,通过dockerfile制作自己的应用程序镜像。

 这里首先用系统镜像创建自己所需的docker容器,根据系统镜像部署容器,简单的步奏如下:

1,启动centos系统镜像,并进入系统镜像

2,在系统镜像中部署应用服务nginx,mysql,php等

3,将部署好的系统镜像提交为新的系统镜像,并使用新的镜像创建容器

4,将这个新的镜像打包,可以导入到别的docker服务器上使用

 
 
下面使用下载好的centos系统镜像创建一个nginx应用服务

[root@localhost ~]# docker run  --privileged  --name  host  -d  -i  -t  centos  /sbin/init
820e8b0be033f65b512d92c2d2281d5140c90bcc734b780168cd3c0118f7d104

 --【最后执行的指令是 /sbin/init,如果这里仍是/bin/bash进入容器执行systemctl指令还是有同样的问题】

【centos7容器里面出现的一个BUG,即centos7镜像创建的容器里面安装服务后,不能用systemctl/service启动服务,centos6的容器里没有这个坑。
可以通过使用 --privileged 选项来避免这个错误。】

  进入centos容器安装nginx应用

[root@localhost ~]# docker exec -it host bash

  安装nginx服务

[root@820e8b0be033 /]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Retrieving http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
warning: /var/tmp/rpm-tmp.JHI5he: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:nginx-release-centos-7-0.el7.ngx ################################# [100%] [root@820e8b0be033 /]# yum install nginx -y

  启动检查服务是否正常

[root@820e8b0be033 /]# systemctl start nginx
[root@820e8b0be033 /]# ps -ef |grep nginx
root 187 1 0 08:17 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 188 187 0 08:17 ? 00:00:00 nginx: worker process
root 190 77 0 08:17 ? 00:00:00 grep --color=auto nginx
[root@820e8b0be033 /]#

 将这个装了nginx服务的容器提交为新的镜像

[root@localhost ~]# docker stop 820
820
[root@localhost ~]# docker commit 820 nginx-server
sha256:a0f9f0a113a57bd90790b197096df3205c3f65ab5798e3364b31185617d84fe4
[root@localhost ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-server latest a0f9f0a113a5 27 seconds ago 302 MB
docker.io/nginx latest 73acd1f0cfad 24 hours ago 109 MB
docker.io/centos latest 2d194b392dd1 9 days ago 195 MB
[root@localhost ~]#

 利用新提交的镜像创建一个新额容器 mynginx

[root@localhost ~]# docker run -d -i -t --name mynginx -p 80:80 -v /usr/share/nginx/html:/usr/share/nginx/html nginx-server
52ee2d59bbad033de9d0989682346d2cbc5e3bd34919ad738f66c64d73f98f28
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52ee2d59bbad nginx-server "/sbin/init" 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp mynginx
[root@localhost ~]#

  启动新容器中nginx

 

[root@localhost ~]# docker exec -it 52e bash
[root@52ee2d59bbad /]# ps -ef | grep nginx
root 39 26 0 08:32 ? 00:00:00 grep --color=auto nginx
[root@52ee2d59bbad /]# systemctl start nginx
[root@52ee2d59bbad /]# ps -ef | grep nginx
root 45 1 0 08:33 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 46 45 0 08:33 ? 00:00:00 nginx: worker process
root 48 26 0 08:33 ? 00:00:00 grep --color=auto nginx
[root@52ee2d59bbad /]# exit
exit

  访问测试页面

后面学习使用Dockerfile的方式创建镜像~

 

Docker学习笔记--2 镜像的创建的更多相关文章

  1. Docker学习笔记之通过 Dockerfile 创建镜像

    0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...

  2. Docker学习笔记_使用Dockerfile创建flask的一个镜像

    一.实验环境 1.宿主机OS:Win10 64位 2 .虚拟机OS:Ubuntu18.04 64位    虚拟机名称:Ubuntu18VM1   虚拟机IP:192.168.8.25 3.账号:doc ...

  3. Docker学习笔记之镜像与容器

    0x00 概述 镜像和容器作为 Docker 里最基础的概念,我们很有必要了解 Docker 对它们的很多定义以及其他与它们有关的知识.在这一小节里,我们就专门针对镜像与容器两个概念展开,细致的梳理与 ...

  4. docker学习笔记2--对镜像/容器的命令操作

    Docker启动一个Centos镜像 我们下载完成一个Centos镜像之后,开始启动 docker run -d -i -t <imageID> /bin/bash 这样就能启动一个一直停 ...

  5. Docker学习笔记:镜像、容器、数据卷

    核心概念 镜像:一个只读的模板,类似虚拟机的镜像. 容器:可以理解为镜像的一个运行实例.运行时类似于沙箱,多个容器互相独立. 仓库:存放镜像文件的地方. 镜像 命令表格 命令 解释 选项 docker ...

  6. docker学习笔记-常用镜像相关命令

    docker images # 1.使用 [root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker images REPOSITORY TAG IMAGE ID CREATED ...

  7. Docker学习笔记-CentOS7镜像

    前言: 环境:centos7.5 64 位 正文: 第一步:下载centos7镜像 docker pull centos 第二步:建立centos7的容器 sudo docker run --priv ...

  8. docker学习笔记(3)- 镜像

    简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...

  9. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

随机推荐

  1. 判断是pc端登录还是移动端登录

    java判断 https://blog.csdn.net/qq_32657581/article/details/71405838 https://zhidao.baidu.com/question/ ...

  2. sparkSQL元数据缓存不同步 beeline连接的表结构与hive不一致

    之前遇到过的坑,通过beeline连接spark thirft server,当在Hive进行表结构修改,如replace/add/change columns后,表结构没有变化,还是旧的表结构,导致 ...

  3. web.xml中监听器如何顺序加载

    最近用到在Tomcat服务器启动时自动加载数据到缓存,这就需要创建一个自定义的缓存监听器并实现ServletContextListener接口, 并且在此自定义监听器中需要用到Spring的依赖注入功 ...

  4. map系统学习

    映射map又称字典,表,或者查找表,其元素是由key和value两个分量组成的对偶(key,value). key是键,value是与键key相关联的映射值,这样的元素又称“关联”.key和value ...

  5. python3+Appium自动化08-数据配置yaml

    yaml简介 yaml是一种简洁的非标记语言.yaml以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读 由于实现简单,解析成本低,yaml特别适合在脚本语言中使用.现有的语言实现: ...

  6. Python metaclasses

    metaclasses元类:就像对象是类的实例一样,类是它的元类的实例.调用元类可以创建类. metaclass使用type来创建类,type可以被继承生成新的元类. 这个和C#的反射很相似. 下面是 ...

  7. 还不知道如何使用 IDEA ?教你三招快速掌握 IDEA

    前言 IntelliJ IDEA 是一个非常强大的 IDE,拥有许多功能.在 IDEA 中大部分功能都可以用快捷键去完成,如果掌握了大部分快捷键,可以只使用键盘开发了. ps: 最近正在练习快捷键,准 ...

  8. js中的位运算符 ,按位操作符

    按位操作符(Bitwise operators) 将其操作数(operands)当作32位的比特序列(由0和1组成),而不是十进制.十六进制或八进制数值.例如,十进制数9,用二进制表示则为1001.按 ...

  9. 解决IE8的兼容问题

    本文分享下我在项目中积累的IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的方式写的,然后下面的几点都关注过,那么基本上很大一部分IE8+兼容性问题都OK ...

  10. [AngularJS] $location 服务简介

    参考博客:  https://www.cnblogs.com/gaoruixin/p/6070502.html 简介 $location服务解析在浏览器地址栏中的URL(基于window.locati ...