docker 安装卸妆官方说明: 

https://docs.docker.com/install/linux/docker-ee/centos/#os-requirements

本系列基于centos, docker镜像实现

首先, 运行docker进入bash, 没啥用, 就让你看看, 之后exit就行

  1. docker run -i -t -v /root/software/:/mnt/software/ docker.io/centos /bin/bash
  1. # 参数:
  2. # -i:表示以“交互模式”运行容器,-i 则让容器的标准输入保持打开
    # -d: 表示容器后台运行
  3. # -t:表示容器启动后会进入其命令行,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
  4. # -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>,-v 标记来创建一个数据卷并挂载到容器里。在一次 run 中多次使用可以挂载多个数据卷。
  5. # -p:指定对外80端口
  6. # 不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”

Dockerfile

  1. ############################################
  2. # version : Docker version 1.10., build 3999ccb-unsupported
  3. # desc : 当前版本安装的 vim wget curl openssh-server sudo openssh-clients iproute.x86_64
    #     增加免密登陆
  4. ############################################
  5.  
  6. FROM docker.io/centos
  7. MAINTAINER wenbronk "wenbronk@163.com"
  8.  
  9. # 一次性安装vim,wget,curl,ssh server等必备软件
  10. RUN yum install -y vim wget curl openssh-server sudo openssh-clients iproute.x86_64
  11. RUN mkdir -p /var/run/sshd
  12.  
  13. # 安装supervisor工具
  14. RUN yum install -y python-setuptools
  15. RUN easy_install supervisor
  16. RUN mkdir -p /var/log/supervisor
  17.  
  18. # 将sshd的UsePAM参数设置成no
  19. RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
    RUN ssh-keygen -t dsa -P '' -f /root/.ssh/id_dsa
    RUN cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys
  20.  
  21. # 添加root账户的密码为123456
    RUN echo "root:123456" | chpasswd
  1. # 添加测试用户admin,密码admin,并且将此用户添加到sudoers里
  2. RUN useradd admin
  3. RUN echo "admin:admin" | chpasswd
  4. RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers
  5. # 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)
  6. COPY supervisord.conf /etc/supervisor/supervisord.conf
  7. # 容器需要开放SSH 22端口
  8. EXPOSE
  9. # 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。
  10. CMD ["/usr/bin/supervisord"]

supervisord.conf文件

  1. # 配置文件包含目录和进程
  2. # 第一段 supervsord 配置软件本身,使用 nodaemon 参数来运行。
  3. # 第二段包含要控制的 个服务。每一段包含一个服务的目录和启动这个服务的命令。
  4.  
  5. [supervisord]
  6. nodaemon=true
  7.  
  8. [program:sshd]
  9. command=/usr/sbin/sshd -D

注意: add命令使用时, 只能使用相对路径, 实际测试只能在当前目录下

构建docker镜像, 如果Dockerfile不在路径下, 则不是 .  而是写绝对路径

  1. docker build -t wenbronk/centos .

命令改进

  1. docker run -p 9999:22 -t -i "birdben/tools:v1"

重新构建遇到的坑

  1. 在自己电脑上没事也布一次, 结果怎么也不行, 搞了2个点, 最后发现是因为yum install -y ...
  2. 没有加 -y

可通过ssh链接进容器进行查看

  1. ssh admin@192.168.208.128 -p

目前存在一个问题, 进入后不能ssh, 后来查询查找到一种方法, 但感觉不好, 寻找更好的方法:

http://blog.csdn.net/rznice/article/details/52253114

解决办法就是在docker run 的时候运行/usr/sbin/init 。比如:

[root@localhost /]# docker run -tid --name hadoopbase centos/hadoopbase:v001 /usr/sbin/init

docker 创建基础镜像的更多相关文章

  1. Docker制作基础镜像

    Docker镜像制作 方式一:手动运行一个容器,做好所有配置,然后把容器提交成一个镜像 方式二:使用DockerFile 示例1:做一个yum安装的nginx镜像 - 运行并进入一个centos容器: ...

  2. docker 系列 - 基础镜像环境和Docker常用命令整理

    =======================docker 基础镜像环境 alpine=======================可以使用 docker search 命令搜索指定的 image, ...

  3. docker创建nginx镜像

    注意:此处不是用的dockerfile创建的镜像,只是用来搞一搞 首先你的系统里面要安装docker,这里就不重复介绍了,可以看之前的文章: 然后再搞一个基础镜像 docker pull regist ...

  4. docker 创建jdk镜像

    基于上一个创建的基础镜像, wenbronk/centos Dockerfile ############################################ # version : we ...

  5. 利用docker进行基础镜像制作

    前言 最近想通过Javaee来开发博客,但是不想因为环境配置问题总是耗时间配置相关配置,所以萌生出用docker镜像来搭建web的系统环境,也是作为docker学习实践的笔记. docker hub注 ...

  6. Docker创建私有镜像仓库

    Docker官方提供了一个工具docker-registry,可以借助这个工具构建私有镜像仓库: 1.拉取registry镜像 # docker pull registry//可以使用 docker ...

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

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

  8. docker 创建mysql镜像,并成功进行远程连接

    1.安装 1.1 拉取镜像 docker pull mysql 拉取成功可以验证一下 docker images 1.2 创建并启动一个mysql容器 docker run --name ly-mys ...

  9. DocKer 创建容器 镜像端口映射失败

    问题一: 我想使用同一个镜像创建多个容器,并映射端口出现以下错误,该怎么解决? docker: Error response from daemon: driver failed programmin ...

随机推荐

  1. Python3中map函数的问题

    在Python2中map函数会返回一个list列表,如代码: >>> def f(x, y): return (x, y) >>> l1 = [ 0, 1, 2, ...

  2. hdu 5009 离散化

    http://acm.hdu.edu.cn/showproblem.php?pid=5009 有一段序列,涂连续一段子序列的代价为该子序列出现不同数字个数的平方,求最小代价涂完整个序列. ai有10^ ...

  3. java socket编程(也是学习多线程的例子)详细版----转

    7.2 面向套接字编程    我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式 7.2.1使用套接字实现基于TCP协议的服务器和客户机程序  ...

  4. cried me a river--kristinia debarge

    cried me a river--kristinia debarge I still remember the day that we metI hold on to every word you ...

  5. 【WinRT】多语言化应用程序名称

    在Windows Phone 8的时候,要对应用程序在列表中显示的名称和锁定到开始屏幕的磁贴的名称进行多语言化是十分困难的,需要使用C++建立一个多语言资源库.但是,在WinRT中,这变得简单多了,无 ...

  6. Checkpoint--查看各DB上的脏页

    可以使用sys.dm_os_buffer_descriptors来看数据页在buffer pool中的状态,其中is_modified来标示数据页是否为脏页 --------------------- ...

  7. C# Socket 实现WebSocket服务器端

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  8. 使用node_redis进行redis数据库crud操作

    正在学习使用pomelo开发游戏服务器,碰到node.js操作redis,记录一下 假设应用场景是操作一个用户表的数据 引入node_redis库,创建客户端 var redis = require( ...

  9. Day37 多进程

    什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体: ...

  10. 三,PHP缓存机制实现页面静态化

    页面静态化思路: 因为新闻这种信息对实时性要求不高,并且比较稳定,所以可以这样做:当地一个用户访问某条新闻后,我们使用ob缓存机制,将内容缓存到html页面.当下一次访问时候,直接访问html页面.这 ...