环境准备

1台centos 6.5镜像虚拟机  febootstrap、docker

febootstrap 安装

yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 yum -y install febootstrap

docker 安装

yum -y install docker-ioservice docker start

使用root账号制作镜像,普通用户制作后会有各种问题:

febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim -i openssh-server -i openssh-clients -i tar -i gzip centos6 centos6-image http://mirrors.aliyun.com/centos/6/os/x86_64/  (-i 安装package, centos6 操作系统版本,centos6-doc安装目录,最后是源地址)

执行完成后 你当前目录会生成centos6-image 目录

cd centos6-image
cp etc/skel/.bash* root/ (不拷贝,登录后Linux提示行会显示 bash-41#,而不是我们正常看到的[root@localhost ~]#)
tar -c .|docker import - centos6-base (centos6-base 为docker 镜像名称)

查看镜像

docker imagesREPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos6-base          latest              8f94e0bebd19        6 hours ago         399.4 MB

启动进入镜像

[root@192-168-0-151 build]# docker run  -itd 8f94e0bebd19 bash
2e943abb130a32830dd8580ab9345dd514b7b39597559cd08a790a8754ef56f1
[root@192-168-0-151 build]# docker exec -it 84f48b314bfa bash[root@2e943abb130a /]#

进入镜像后,你可以安装自己的应用,我这里安装的是php 和nginx

我在/etc/init.d/ 下加入了nginx 和php-fpm 的启停脚本(可以省略)

容器里应用开机启动

容器下面多个应用启动的方法有很多种,比如supervisord、shell脚本等

我这里用的是shell 脚本的方法

mkdir /usr/local/scripts[root@2e943abb130a scripts]# cat init-bashrc.sh
#!/bin/shfunction service_start()
{for SERVICE in nginx php-fpm sshddoif ! (ps ax | grep -v grep | grep $SERVICE > /dev/null)then/etc/init.d/$SERVICE start;fidone
}service_start

编辑   ~/.bashrc

[root@2e943abb130a scripts]# cat  ~/.bashrc
# .bashrc# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
fialias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ll='ls -l'
alias vi='vim'/usr/local/scripts/init-bashrc.sh
# User specific aliases and functions

记得source  ~/.bashrc

退出容器 ctrl +d

提交容器为新的镜像

docker commit 2e943abb130a centos6-nginx-php56:v1d85f477d9e00d12c380ebc442d544e0d8c9dd8ee86441e0885bb54f636c18ec1

提交成功后,docker images 会发现多出一个镜像

启动新镜像

[root@192-168-0-151 build]# docker run -it centos6-nginx-php56:v1Starting nginx:                                            [  OK  ]
Starting php-fpm:                                          [  OK  ]
Starting sshd:                                             [  OK  ]
[root@36abc5805a89 /]# 

你还可以启动时暴漏端口,修改root 密码等

这里我们可以用Dockerfile 来做,下面只是个示例,关于Dockerfile 这里就不说明了。

cat Dockerfile

FROM centos6-nginx-php56:v1
MAINTAINER Tempted
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN echo "root:123456" | chpasswd
EXPOSE 22 80
CMD ["bash"]

build 新的镜像

[root@192-168-0-151 build]# docker  build -t centos6-lnp:v1 .
Sending build context to Docker daemon 15.87 kB
Sending build context to Docker daemon
Step 0 : FROM centos6-nginx-php56:v1---> d85f477d9e00
Step 1 : MAINTAINER Tempted---> Running in 46ec3f0fab12---> 4ed3d31476d0
Removing intermediate container 46ec3f0fab12
Step 2 : RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config---> Running in 48ece83ad435---> c02f08cf9b19
Removing intermediate container 48ece83ad435
Step 3 : RUN echo "root:123456" | chpasswd---> Running in 22d1086800ca---> 18db13e52113
Removing intermediate container 22d1086800ca
Step 4 : EXPOSE 22 80---> Running in 8a65e01a0e84---> 63a5bd61ba88
Removing intermediate container 8a65e01a0e84
Step 5 : CMD bash---> Running in 671572d70abf---> d0c9c51584ee
Removing intermediate container 671572d70abf
Successfully built d0c9c51584ee

这时你执行docker images 会看到三个image

启动新的镜像

[root@192-168-0-151 build]# docker run -itd d0c9c51584ee bash
bc10a9e77a8c8b9eb12a7da16d6513ffa11a686d29dc86e050e702fac96a6109
[root@192-168-0-151 build]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
bc10a9e77a8c        d0c9c51584ee        "bash"                 20 seconds ago      Up 17 seconds       22/tcp, 80/tcp      cocky_morse 

[root@192-168-0-151 build]# docker  exec -it bc10a9e77a8c ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:51  inet addr:172.17.0.81  Bcast:0.0.0.0  Mask:255.255.0.0inet6 addr: fe80::42:acff:fe11:51/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:41 errors:0 dropped:0 overruns:0 frame:0TX packets:38 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:5060 (4.9 KiB)  TX bytes:5179 (5.0 KiB)lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

连接

[root@192-168-0-151 build]# ssh 172.17.0.81
root@172.17.0.81's password:
Last login: Fri Nov  3 17:23:16 2017 from 172.17.42.1
[root@bc10a9e77a8c ~]# 

导出镜像

docker  save centos6-lnp:v1 >centos6-lnp.tar

转载于:https://www.cnblogs.com/Tempted/p/7778735.html

docker 自制CentOS 6-lnp镜像相关推荐

  1. Docker自制CentOS镜像

    系统环境:CentOS 7.3 将yum源切换到阿里源 可以直接写成一个脚本 #!/bin/sh mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...

  2. 关于Docker官方CentOS镜像无法启动mysqld的总结

    很多童鞋反映,在Docker官方CentOS镜像中安装了Mysql server后,无法正常启动. 无法正常启动表现为两种情况: 1> 初始完数据库后,mysqld启动报错 2> syst ...

  3. docker无法连接mysql镜像_关于Docker官方CentOS镜像无法启动mysqld的总结

    很多童鞋反映,在Docker官方CentOS镜像中安装了Mysql server后,无法正常启动. 无法正常启动表现为两种情况: 1> 初始完数据库后,mysqld启动报错 2> syst ...

  4. centos 安装java_自己动手基于centos7安装docker及如何发布tomcat镜像

    欢迎关注我的头条号:Wooola,专注于Java.Golang.微服务架构,致力于每天分享原创文章.快乐编码和开源技术. 前言 在安装docker之前,先要检查centos7的内核版本,docker要 ...

  5. docker运行centos镜像发布python项目

    前情提要:centos镜像容器已经按上一篇安装好了Python3环境:docker运行centos镜像 安装python3.9环境_苍穹之跃的博客-CSDN博客指定安装的文件夹为: /home/pyt ...

  6. docker使用centos镜像,编译安装nginx,并上传镜像

    docker使用centos镜像,编译安装nginx 1. 拉取镜像 2. 运行centos容器 3. 安装依赖包 4. 下载nginx的tar包 5. 解压nginx的tar包 6. 创建nginx ...

  7. 【docker】解决docker启动centos镜像不成功问题

    解决docker启动centos镜像不成功问题 当我们用docker 启动centos镜像后,并不会启动成功,而是启动后立马停止. root@dockergeng:~# docker run cent ...

  8. Centos中安装docker并查看拉取镜像的位置

    此操作全程在root用户下执行 一.docker安装 执行以下命令将yum包更新到最新版本 yum update 下载docker所需的软件包 yum install -y yum-utils dev ...

  9. Docker 构建 Centos 7 镜像

    1.拉取基础镜象 docker pull centos:7 2.查看镜象 [root@kvm108 ~]# docker images REPOSITORY TAG IMAGE ID CREATED ...

最新文章

  1. JavaScript夯实基础系列(一):词法作用域
  2. EOS账户和钱包综合指南
  3. 【JAVA基础】一:聊聊笔试常见到的 “==、equal” 比较是否相等的内在差别
  4. xml 中插入html代码
  5. 为并发而生的 ConcurrentHashMap,基于 Java8 分析
  6. android一些不常用的事件
  7. Mac如何关闭触控板防止误触?内置的设置就可以达成
  8. vs2008中文版提供下载(包含中文msdn)
  9. VS运行程序时遇到0xc0150002的问题
  10. Android之NDK开发入门
  11. Linux_admin-练习
  12. QT 设置label内字体,字体颜色,背景色 ; 字体的中英对照
  13. 新的时间处理工具joda
  14. FastJson的JSON.isValid()出现BUG!
  15. 三维重建3:旋转矩阵-病态矩阵、欧拉角-万向锁、四元数
  16. 安全快报 | 美国国土安全部负责人表示,海事部门缺乏网络安全
  17. Python基础与拾遗1:Python中的数字
  18. 2022年全球市场薄膜厚度测量系统总体规模、主要生产商、主要地区、产品和应用细分研究报告
  19. 计算机网络学习笔记(详尽版)
  20. 机考怎么作弊_电脑上考试如何作弊 电脑上考试不能复制粘贴怎么办

热门文章

  1. 超过了 PCH 的虚拟内存范围;请使用“-Zm120”或更大的命令行选项重新编译
  2. LED灯丝灯驱动电源芯片方案-输出短路保护特性 调光深度0.1% 外围元件少
  3. 了解并使用计算机,认识计算机 教案
  4. 过劳死 梦魇笼罩下的IT精英
  5. Mac文件丢失如何找回?快来看它!
  6. linux终端上打不了密码,键入密码后,终端上没有任何显示
  7. 记录一次批量插入的优化历程
  8. 国内单基站查询 api数据接口
  9. Wex5 组件的bind-visible属性控制显隐
  10. 【企业】韬盛和夫六精进