zoukankan      html  css  js  c++  java
  • docker 创建基础镜像

    docker 安装卸妆官方说明: 

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

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

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

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

    Dockerfile

    ############################################
    # version : Docker version 1.10.3, build 3999ccb-unsupported
    # desc : 当前版本安装的 vim wget curl openssh-server sudo openssh-clients iproute.x86_64
    #     增加免密登陆 ############################################ FROM docker.io
    /centos MAINTAINER wenbronk "wenbronk@163.com" # 一次性安装vim,wget,curl,ssh server等必备软件 RUN yum install -y vim wget curl openssh-server sudo openssh-clients iproute.x86_64 RUN mkdir -p /var/run/sshd # 安装supervisor工具 RUN yum install -y python-setuptools RUN easy_install supervisor RUN mkdir -p /var/log/supervisor # 将sshd的UsePAM参数设置成no 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

    # 添加root账户的密码为123456
    RUN echo "root:123456" | chpasswd
    # 添加测试用户admin,密码admin,并且将此用户添加到sudoers里
    RUN useradd admin
    RUN echo "admin:admin" | chpasswd
    RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers
    
    # 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)
    COPY supervisord.conf /etc/supervisor/supervisord.conf
    
    # 容器需要开放SSH 22端口
    EXPOSE 22
    
    # 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。
    CMD ["/usr/bin/supervisord"]

    supervisord.conf文件

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

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

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

    docker build -t wenbronk/centos .

     命令改进

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

    重新构建遇到的坑

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

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

    ssh admin@192.168.208.128 -p 9999

    目前存在一个问题, 进入后不能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

  • 相关阅读:
    浅出Java Socket 编程
    WPF指南之一(WPF的结构)
    使用URL访问网络资源
    WPF指南之三(XAML的名字空间)
    多线程并发思考文件加锁
    关于kindeditor上传图片出现"服务器发生故障"的解决办法
    isset function of PHP
    JSON字符串传到后台PHP处理的问题
    isset function of PHP
    (转)Linux利器 strace
  • 原文地址:https://www.cnblogs.com/wenbronk/p/6388144.html
Copyright © 2011-2022 走看看