用Docker尝试搭建了一个Apache2服务器,整体安装很简单,但是从容器中退出后,Apache2服务器也就随之停止,网上有很多说可以通过docker run 加上-d参数可以使得服务器跑在后台,但是我试了以后,发现-d启动起来的容器的状态是exit,而且用docker start也无法改变状态,不知道是我操作有误,还是其他的原因,如果其他朋友有更好的解决方法,欢迎留言交流。

经过一番摸索,使用了如下方法,终于 得以解决。

因为是学习之用,故从最开始配置docker开始记录,大神请忽略这部分。

1、首先是安装docker,Linux下很简单,apt-get就可以了

2、然后是下载响应的镜像,我这里下载了ubuntu:14.04/ubuntu:16.06:

docker pull ubuntu:14.04
docker pull ubuntu:16.04

3、启动一个容器,安装我们需要的服务器环境(apache\php\vim……,根据自己服务器需要即可)

docker run -it ubuntu:14.04 /bin/bash

可以看到,我们已经进入到我们的docker容器中来了,接下来就是按照正常的程序安装我们需要的软件即可

安装方法有很多,Debian系的apt-get install;红帽系的:yum install;这里不再赘述

4、安装完成后,我们需要保留下我们已经安装好的容器,以备后用

这一步有两种方式

(1)如果只是一台服务器自己用,可以直接用:docker commit来构建

docker commit -m "Apache2 Server" -a "toor" 7dd7ef463447(CONTAINER ID) server/ubuntu-t:14.04

这里解释下参数:-m 容器的注释,一般告诉我们这个容器是用来干什么的

        -a  表示容器的维护者,一般是容器创建者

        后面的那串数字是你的容器号,就是图中红色方框标识出来的字符串

        再后面的server/ubuntu-t是你给这个容器起的别名,冒号后面是你给容器标记的版本号。这部分是为了唯一标识这个容器

接下来我们就可以通过命令:“docker images” 看到自己创建好的容器了,如下图红色标识的位置所示

(2)如果我们需要把做好的容器与他人分享,这就需要通过docker build方式来制作,这里以我们刚才制作的server/ubuntu-t为例,方式如下:

首先新建一个目录:apache-server

mkdir apache-server

然后在apache-server文件夹下创建一个Dockerfile文本文件,并向其中写入基本的控制语句:

FROM server/ubuntu-t:14.04 #指定使用哪一个镜像
MAINTAINER toor #指定镜像维护者

进入apache-server文件夹,执行下列语句

docker build -t="server/ubuntu-t1:14.04" .

说明一下参数:-t参数指定新的tag名称,即唯一确定镜像的连个标识符

我们可以看到新的镜像id,docker images也可以看到新的镜像,如下。

5、接下来就是如何解决我们让含有Apache的服务器能正常后台工作的步骤了

(1)通过docker run来启动docker

docker run -it -p : server/ubuntu:14.04 /bin/bash

(2)正常启动容器,进入到容器的shell后,开启apache2服务

/etc/init.d/apache2 start

(3)服务启动后,按下ctrl+d退出容器

(4)我们看到,此时容器的状态是exited,我们启动这个容器

docker start c74fdcdfe7da(CONTAINER ID)

(5)容器启动起来后,进入容器重新开启apache2服务,然后ctrl+d退出容器

我们看到这次容器的状态依旧是UP的。测试相应的端口转发也是正常的,这样我们就可以通过docker对外安全的提供服务了。

(6)如果要停止相应的容器,执行相应的停止命令即可:

docker stop c74fdcdfe7da(CONTAINER ID)

Docker搭建独立服务器的更多相关文章

  1. Docker搭建Svn服务器

    一.下载镜像 # 搜索镜像 docker search svn # 下载镜像 docker pull garethflowers/svn-server 二.启动镜像 # 编辑配置文件 vim dock ...

  2. Centos7使用docker搭建gitlab服务器

    了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...

  3. 使用Docker搭建svn服务器教程

    svn简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subv ...

  4. 利用docker搭建rtmp服务器(1)

    以后的项目里面可能需要用到直播,所以就先看看 本来想在自己MAC上搭建nginx的,后来怕把自己的机子搞乱,刚好就学习了下docker,感觉docker强大就在于是一个操作系统软件的版本管理系统,可以 ...

  5. docker 搭建ntp服务器

    背景 在搭建etcd集群时,如果主机时间相差太多会出现同步错误,如果外部网络不可用时,需要使用内部的ntp服务器同步时间. 构建ntp镜像 创建Dockerfile # usage: # docker ...

  6. docker搭建gitlab服务器(Centos7)

    系统环境:CentOS Linux release 7.6.1810 (Core) git版本:gitlab/gitlab-ce 一.安装和启动docker 见HTTPRUNNERMANAGER安装部 ...

  7. 基于Docker搭建GitLab服务器

    运行环境:CentOS 7.4 一.安装Docker Docker安装可以参照runoob教程(http://www.runoob.com/docker/centos-docker-install.h ...

  8. 使用docker搭建gitlab服务器

    简单记录Docker的使用和GitLab的搭建 Docker基础篇 没有sudo权限 安装docker 基础命令 docker安装mysql和配置 Dockerfile常用命令 制作镜像 发布镜像 容 ...

  9. 使用docker搭建gitlab 服务器

    本次使用的docker版本为 1.首先需要安装docker. 2.启动docker后,service docker start   3.拉取镜像  docker pull gitlab/gitlab- ...

随机推荐

  1. javascript 面向对象 new 关键字 原型链 构造函数

    JavaScript面向对象JavaScript 语言使用构造函数(constructor)作为对象的模板.所谓"构造函数",就是专门用来生成实例对象的函数.它就是对象的模板,描述 ...

  2. maven-surefire-plugin

    本文参考自:https://www.cnblogs.com/qyf404/p/5013694.html surefire是maven里执行测试用例(包括testNG,Junit,pojo)的插件,他能 ...

  3. 同一个tomcat启动多个实例

    一般在使用Tomcat时,服务器会从conf及webapps目录中读取配置文件,并将文件写入logs.temp和work目录,当然一些jar文件和class文件需要从服务器的公共目录树中予以加载.因此 ...

  4. # 20145103《Java程序设计》第6周学习总结

    20145103<Java程序设计>第6周学习总结 教材学习内容总结 第十章 第十章输入和输出 10.1.1 ·若要将数据从来源中取出,可以使用输入串流:若要将数据写入目的地,可以使用输出 ...

  5. Spring笔记1——Spring起源及其核心技术

    Spring的作用 当我们使用一种技术时,需要思考为什么要使用这门技术.而我们为什么要使用Spring呢?从表面上面SSH这三大框架中,Struts是负责MVC责任的分离,并且提供为Web层提供诸如控 ...

  6. COGS 723. [SDOI2007] 超级数组

    ★★☆   输入文件:arr.in   输出文件:arr.out   简单对比 时间限制:1 s   内存限制:3 MB  Source: SDOI2007 Day2[问题描述] 一般的数组大家都经常 ...

  7. centos7 firewall 操作

    一.firewall配置 The configuration for firewalld is stored in various XML files in /usr/lib/firewalld/ a ...

  8. [Pytorch]PyTorch使用tensorboardX(转

    文章来源: https://zhuanlan.zhihu.com/p/35675109 https://www.aiuai.cn/aifarm646.html 之前用pytorch是手动记录数据做图, ...

  9. webstorm自动换行

    1.文件 — — 设置 2. 编辑器 — — 编辑器 — — 在编辑窗口使用软换行(勾选)

  10. ***使用jQuery去封装插件(组件化、模块化的思想),即扩展方法

    如何使用jQuery去封装插件,区分扩展全局方法与扩展一个普通的jQuery实例对象的方法 1.给全局对象扩展方法:①$.方法 = function(参数可加可不加){}  ②使用:$.方法(有参数的 ...