博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:Docker创建centos的LNMP镜像
阅读量:5237 次
发布时间:2019-06-14

本文共 2525 字,大约阅读时间需要 8 分钟。

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

 

 1. 安装docker

        这个就不说了,不会的可以看下我之前的文章《》。

 

    1)启动docker

# service docker start

 

 2. 下载docker镜像

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

 

    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镜像已经下载下来了。

blob.png

 3.  运行容器

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

 

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

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

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

blob.png

 

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

        这里就不详细说了,如果不会安装lnmp的,可以看这里:《》。

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

        blob.png

 

 4. 制作生成新镜像

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

 

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

# docker ps -lq

        blob.png

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

 

    2)提交生成新镜像

# docker commit fe77b vckai/dev:v1

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

blob.png

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

 

    3)查看所有的镜像

# docker images

blob.png

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

 

 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

blob.png

 

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

# docker stop/restart/kill/start 

        更多容器操作命令可以看这篇文章:。  

 

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

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

        

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

        

    1)安装

# 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教程中文版本:

Nsenter github:

docker命令学习笔记:

 

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 -ddocker: 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

 

转载于:https://www.cnblogs.com/wangxusummer/p/5207449.html

你可能感兴趣的文章
PBXCp Error
查看>>
[poj 3539] Elevator (同余类bfs)
查看>>
[tyvj2054] 四叶草魔杖 (最小生成树 状压dp)
查看>>
[译] 命名有意义的版本号2.0.0-rc1
查看>>
poj 1463树形dp 树的最小覆盖
查看>>
【转】Apache httpd.conf配置解释
查看>>
团队冲刺(第五天)
查看>>
浅谈树链剖分(C++、算法、树结构)
查看>>
FZU2121_神庙逃亡
查看>>
Kubernetes 之 MySQL 持久存储和故障转移(十一)
查看>>
HAProxy的访问控制
查看>>
Codeforces Round #349
查看>>
POJ2104 K-th Number Range Tree
查看>>
Ubuntu14.04安装GNOME3桌面
查看>>
解决:j-link V8下载器灯不亮,无法正常烧写固件
查看>>
初识面向对象
查看>>
Java反射和动态代理
查看>>
hadoop多机安装HA+YARN
查看>>
面试-数据库
查看>>
AJAX overrideMimeType作用
查看>>