Docker创建centos的LNMP镜像
前段时间重装了系统,今天刚好有时间,就用docker安装一个lnmp开发环境,下面是我的安装笔记。
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镜像已经下载下来了。
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的,可以看这里:《centos6 下安装nginx1.7.9+php5.6.4+mysql5.6.2》。
安装完成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 <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
Docker创建centos的LNMP镜像的更多相关文章
- 转:Docker创建centos的LNMP镜像
转自:http://www.vckai.com/p/29 1. 安装docker 这个就不说了,不会的可以看下我之前的文章<Docker介绍及安装>. 1)启动docker # serv ...
- Docker使用Dockerfile创建Centos(tomcat+jdk)镜像
原文链接:https://blog.csdn.net/qq_37936542/article/details/80824389 Docker构建镜像的方法主要有两种: (1)使用docker c ...
- Docker创建Centos踩出来的坑
屁话不多说,先来一遍正常的流程 1.下载centos镜像 # docker pull centos 2.运行容器,修改镜像 2.1 运行 # docker run -itd --name centos ...
- docker 创建elasticsearch集群镜像
搞了2天终于搞好了 更新: 2017/2/15: 更改elasticsearch.yml中绑定ip, 可开启集群效果 //: supervisord.conf 加入 autostart=true, 开 ...
- docker on centos
docker最好在centos7上安装,centos6.5上似乎麻烦不少 这里直接在centos7上安装,要提前装一下epel的repo yum install docker 安装就行 chkconf ...
- 利用docker创建支持centos的ssh镜像
创建docker镜像需要基础镜像,目前官方已提供了多种基础镜像,参见: https://hub.docker.com/explore/ 要想创建支持centos的ssh镜像,就需要以centos镜像为 ...
- docker 创建镜像
docker:/root# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official bui ...
- docker 创建本地镜像服务器
1.docker pull registry //下载registry 镜像,registry 为docker 官方提供的一个镜像, 我们可以用它来创建本地的docker私有仓库. docker:/r ...
- Docker创建支持ssh服务的容器和镜像
原文链接:Docker创建支持ssh服务的容器和镜像 1. 这里使用的centos作为容器,所以首先下载centos的images # sudo docker pull centos 2. 下载后执行 ...
随机推荐
- css设置div等标签背景半透明
三种方式: 1. background-color: transparent; 直接设置背景为透明 2.这种是子元素也会跟着变成半透明 /* 背景半透明,1为不透明 */ opacity: 0.5; ...
- linux命令(7):ipcs/ipcrm命令
ipcs作用 :查看消息队列(ipcs –q).共享内存(ipcs –m).信号灯(ipcs -s) ipcrm作用 :删除消息队列.共享内存.信号灯 ipcrm使用方式: ipcrm [ -M ke ...
- 【转载】PDB命令行调试Python代码
转载自这里. (博主按:PDB调试python代码和用GDB调试c++代码很类似) 你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇到上述境地的次数比你想要的还要多.然而, ...
- linux下c获取时间
头文件 #include "sys/time.h" 结构体 struct timezone { int tz_minuteswest; /*格林威治时间往西方的时差*/ int t ...
- cordova plugin 大全及安装命令
前言:用cordova开发hybrid app的过程中,由于是html5开发的app,在手机上很多权限受限制,这就导致了我们需要安装很多插件来弥补这一缺点.在网上搜了好久,感觉都不是很全,所以自己整理 ...
- taskeng.exe禁用
打开控制面板. 打开管理工具. 打开任务计划程序. 双击左边的的任务计划程序库,看到MySQL,然后双击MysQL,接着看到Installer,再双击Installer,这时候想禁止可以直接禁止 右击 ...
- Codeforces 1131 A. Sea Battle-暴力 (Codeforces Round #541 (Div. 2))
A. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 【转载】CoordinatorLayout源码解析
源码地址:https://github.com/desmond1121/AndroidSdkSourceAnalysis/blob/master/article/CoordinatorLayout%E ...
- 进入CentOS7紧急模式恢复root密码
第一步.重启CentOS7,在以下界面选择要编辑的内核(一般第一个),按e进入编辑界面 第二步.在编辑界面找到如下一行,将ro改为rw init=/sysroot/bin/sh.改完后<Ctrl ...
- leetcode155 Min Stack
题意:模拟一个最小栈,可以push,pop,top,和返回栈中最小值. 思路:已经忘了栈是怎么构建的了,晕···尝试了半天,错误,发现直接用stack数据结构来做最方便,再用一个栈来存最小值.值得注意 ...