转自:http://www.vckai.com/p/29

 1. 安装docker

这个就不说了,不会的可以看下我之前的文章《Docker介绍及安装》。

1)启动docker

# service docker start

2. 下载docker镜像

官网docker镜像网站:https://www.docker.com/,可以在这里查看官网或者第三方的docker镜像。当然如果没有VPN,网络比较慢的情况下,可以考虑使用:https://docker.cn/,这是一个国内的镜像网站。

1)下载docker镜像

# docker pull docker.cn/docker/centos:centos6

说明:docker pull命令是从远程下载镜像的命令,类似git pull。docker.cn/docker/centos是国内镜像网站centos镜像的地址,如果要下载官方centos镜像,直接使用centos即可。:centos6是指这个镜像的tag,我下载的是centos6,如果要下载最新版本,可以使用:latest或者:centos7。

2)查看镜像

# docker images

OK,可以看到centos镜像已经下载下来了。

3.  运行容器

根据刚刚下载的centos镜像运行一个容器进入shell。

1)运行容器,进入该容器的shell界面

# docker run -i -t docker.cn/docker/centos:centos6 /bin/bash

现在我们已经进入容器的shell界面了,这个就是我们下载下来的centos6系统的shell,如图:

下面就是在容器中安装lnmp环境。

这里就不详细说了,如果不会安装lnmp的,可以看这里:《centos6 下安装nginx1.7.9+php5.6.4+mysql5.6.2》。

安装完成lnmp之后,输入exit退出镜像shell界面。

 4. 制作生成新镜像

先查看下刚刚运行的容器(安装lnmp的)的ID,在使用该ID生成新的镜像。

1) 查看刚刚运行的容器ID

# docker ps -lq

可以看到ID为:fe77b1628688,下面我们提交下这个容器生成新镜像。

2)提交生成新镜像

# docker commit fe77b vckai/dev:v1

fe77b1628688这里一般只需要使用前几位数就行了,只要不重复能识别到,可以不输入全部的,vckai/dev:v1 是我生成的新镜像名,如果输入已有的镜像名,则会覆盖原有的镜像。

这里可以看到已经生成好一个新的镜像了,ID为:8717b405408e3df2a12b503e327226d35d6ce118ebc66178ca2bfe440bcb8f04。

3)查看所有的镜像

# docker images

可以看到,刚刚我们生成的镜像就在这里了。

 5. 启动镜像

# docker run -d -p 80:80 -v /web:/www vckai/dev:v1 /sbin/init

-d是以Daemon模式运行。

-p 80:80 是将本地80端口映射到容器的80端口,现在可以在本地使用http://localhost访问。

-v /web:/www 是将本地的/web目录挂载到容器的/www(容器配置的web目录)目录下。

vckai/dev:v1 是要运行的镜像名称。

/sbin/init 是容器运行后的系统初始化操作,主要用于启动nginx,php-fpm,mysql服务。

1)查看docker运行中的镜像

# docker ps

2)停止/重启/kill/启动容器(可选)

# docker stop/restart/kill/start <ID/Name>

更多容器操作命令可以看这篇文章:Docker学习笔记

这个时候你已经可以使用http://localhost 访问你的网站了,咦,奇怪,居然访问不了!突然想起没在容器中配置开机启动,以至/sbin/init初始化的时候没把nginx+php+mysql启动起来。

现在只能先把容器停止,然后进入vckai/dev:v1这个容器,在/etc/rc.local文件中添加nginx、php和mysql的启动运行,然后在docker commit提交覆盖vckai/dev:v1即可。

另外,如果已经在运行中的容器,怎么进入查看呢?两种方式,一个ssh,另外一个使用nsenter。但是不建议使用ssh进入:为什么不需要在 Docker 容器中运行 sshd

1)安装nsenter

# docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

2)进入运行中的容器shell

# docker-enter 65615a

65615a 是我们刚刚使用docker ps查看到的容器ID。

3)启动容器的nginx+php

# /data/apps/nginx/sbin/nginx
# /data/apps/php/sbin/php-fpm

OK,现在打开网站已经是正常运行了!

参考资料:

Docker教程中文版本:https://code.csdn.net/u010702509/docker

Nsenter github:https://github.com/jpetazzo/nsenter

docker命令学习笔记:http://blog.csdn.net/we_shell/article/details/38368137?utm_source=tuicool

FAQ:

1docker run -d -p 80:80 -v /web:/www vckai/dev:v1 /sbin/init
请问如何取消这个命令?

答:通过docker ps 查看容器的ID,再通过docker stop <容器ID>停止容器即可

2$docker ps  报错

Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
$docker -d
docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference

答:运行

sudo yum install device-mapper-event-libs

转:Docker创建centos的LNMP镜像的更多相关文章

  1. Docker创建centos的LNMP镜像

    前段时间重装了系统,今天刚好有时间,就用docker安装一个lnmp开发环境,下面是我的安装笔记. 1. 安装docker 这个就不说了,不会的可以看下我之前的文章<Docker介绍及安装> ...

  2. Docker使用Dockerfile创建Centos(tomcat+jdk)镜像

    原文链接:https://blog.csdn.net/qq_37936542/article/details/80824389 Docker构建镜像的方法主要有两种:    (1)使用docker c ...

  3. Docker创建Centos踩出来的坑

    屁话不多说,先来一遍正常的流程 1.下载centos镜像 # docker pull centos 2.运行容器,修改镜像 2.1 运行 # docker run -itd --name centos ...

  4. docker 创建elasticsearch集群镜像

    搞了2天终于搞好了 更新: 2017/2/15: 更改elasticsearch.yml中绑定ip, 可开启集群效果 //: supervisord.conf 加入 autostart=true, 开 ...

  5. docker on centos

    docker最好在centos7上安装,centos6.5上似乎麻烦不少 这里直接在centos7上安装,要提前装一下epel的repo yum install docker 安装就行 chkconf ...

  6. 利用docker创建支持centos的ssh镜像

    创建docker镜像需要基础镜像,目前官方已提供了多种基础镜像,参见: https://hub.docker.com/explore/ 要想创建支持centos的ssh镜像,就需要以centos镜像为 ...

  7. docker 创建镜像

    docker:/root# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official bui ...

  8. docker 创建本地镜像服务器

    1.docker pull registry //下载registry 镜像,registry 为docker 官方提供的一个镜像, 我们可以用它来创建本地的docker私有仓库. docker:/r ...

  9. Docker创建支持ssh服务的容器和镜像

    原文链接:Docker创建支持ssh服务的容器和镜像 1. 这里使用的centos作为容器,所以首先下载centos的images # sudo docker pull centos 2. 下载后执行 ...

随机推荐

  1. ListView实现分页加载(三)实现分页加载

    在上一篇中,我们实现了底部布局(即带上了进度条).没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866966.html 但是进度条 ...

  2. interaction-oriented architecture - MVC

    MVC(Model-View-Controller),它是专门针 对交互系统提出的,所以如果我们要构建一个交互系统,那么我们就可以直接应用MVC模式,然后 在该模式所搭建的场景的启发下去发现Model ...

  3. 四·安装mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz(基于Centos7源码安装)

    1.在Linux中创建用户mysql和主目录,并创建密码 2.解压缩tar.gz并拷贝到/usr/local/mysql目录下面 3.把/usr/local/mysql文件夹拥有者改为mysql 进入 ...

  4. luogu P2617 Dynamic Rankings(分块,n <= 1e4)

    嘟嘟嘟 带修改区间第k大. 然而某谷把数据扩大到了1e5,所以用分块现在只能得50分. 分块怎么做呢?很暴力的. 基本思想还是块内有序,块外暴力统计. 对于修改,直接重排修改的数所在块,时间复杂度O( ...

  5. 解决vue-router中this.$router.push无法在新窗口中打开

    解决vue-router中this.$router.push无法在新窗口中打开 let routeData = this.$router.resolve({ path: '/consult', que ...

  6. Arduino 入门之小星星

    原理:通过编号映射不同的频率音频信号,配合延时输出,达到演奏音乐和跑马灯的效果. 优酷视频链接:https://v.youku.com/v_show/id_XMzcxODQ4NjA3Mg==.html ...

  7. Spring使用java代码配置Web.xml进行访问service

    方式一:继承WebMvcConfigurerAdapter类 1.使用一个类来继承 package com.wbg.springJavaConfig.spring; import org.spring ...

  8. webapp前端性能优化规范

    加载优化 合并css javascript 合并小图片 使用雪碧图 缓存一切可缓存的资源 使用长的cache 使用外链式引用css,javascript 压缩HTML,CSS,JAVASCRPT 启用 ...

  9. 【Node.js学习笔记】使用Gulp项目自动化构建工具

    刚接触node.js,对前端的一些东西还不是很清楚,据说Gulp这东西很强大,先来看看从网上抄的一段关于自动化构建的描述: 在为数众多的中小型软件作坊中,不存在自动化构建和发布工具.构建.交付准备环境 ...

  10. mysql错误errno:121

    121错误是因为外键名重复.在同一个库中外键是不允许与其他外键重名的. 遇到这个错误请给你定义的外键换唯一无重复的名字. 同时查阅到外键也有可能导致150错误. Can't create table ...