转自: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. PyCharm的Debug工具栏中的Watches

    In the Watches pane you can evaluate any number of variables or expressions in the context of the cu ...

  2. UIView的多重属性

    1)几何属性: 2)位图属性:

  3. codeforces Flipping Game 题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  4. 【转】Android单帧动画Rotate旋转

    项目有一个需求,有一个刷新按钮,上面放着一个常见的静止的刷新圆圈,如下图: 一旦用户按了刷新按钮,需要让这个刷新圆圈转动起来,让用户感觉到程序还在运行着,而不是卡死了. 有两个思路,一是将这个图按照旋 ...

  5. Avito Cool Challenge 2018 C. Colorful Bricks 【排列组合】

    传送门:http://codeforces.com/contest/1081/problem/C C. Colorful Bricks time limit per test 2 seconds me ...

  6. SSH框架——(二)四层结构:DAO,Service,Controller,View层

    1. DAO层: 主要任务:做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此. DAO层的设计:首先是设计DAO层的接口,然后再Spring的配置文件中定义此接口的实现类,然后就可以在模块 ...

  7. HTML CSS STYLE USER Font Awesome Definition Content Attribute

    在css样式表中写样式: 其中content使用图标类对应的字符编码如下

  8. 三十、详述使用 IntelliJ IDEA 解决 jar 包冲突的问题

    在实际的 Maven 项目开发中,由于项目引入的依赖过多,遇到 jar 冲突算是一个很常见的问题了.在本文中,我们就一起来看看,如何使用 IntelliJ IDEA 解决 jar 包冲突的问题!简单粗 ...

  9. 淘宝前端框架kissyui

    http://docs.kissyui.com/1.4/docs/html/guideline/why-kissy.html

  10. ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联

    ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联 CCI-400 集合了互联和一致性功能,有 2 个 ACE slave 接口和 3 个 ACE-Li ...