• docker容器-实战(分享十六)


               前面一节主要是熟悉docker基本操作,本分享就进行介绍一些实战案例,实战才是王道。下面就通过常用的应用进行实战介绍

    一、操作系统(CentOS)

    docker search centos

    docker pull centos

    docker run –it centos(启动一个容器)

    二、创建支持SSH服务的镜像

    docker run –it ubuntu /bin/bash(通过镜像来创建一个容器)

    apt –get update 更新软件源信息

    apt-get install openssh-server 安装和配置SSH 服务

    然后vi编辑sshd

    创建容器方式:commit和dockerfile

    cmmit:

    保存镜像:docker commit fc1 sshd:ubuntu

    使用镜像:docker run –p 10022::22 –d sshd:ubuntu /run.sh

    查看启动:docker ps

    dockerfile

    1.创建工作目录:mkdir sshd_ubuntu

    2.cd ssh_ubuntu

    3.touch sshd_ubuntu

    4.touch dockerfile run.sh

    5.编辑run.sh

    #!/bin/bash

    /usr/sbin/sshd –D

    创建authorized_keys:

    ssh-keygen –t rsa

    cat ~/.ssh/id_rsa.pub >authorized_keys

    6.编写Dockerfile

    ockerfile一般包含下面几个部分:

        基础镜像:以哪个镜像作为基础进行制作,用法是FROM 基础镜像名称
        维护者信息:需要写下该Dockerfile编写人的姓名或邮箱,用法是MANITAINER 名字/邮箱
        镜像操作命令:对基础镜像要进行的改造命令,比如安装新的软件,进行哪些特殊配置等,常见的是RUN 命令
        容器启动命令:当基于该镜像的容器启动时需要执行哪些命令,常见的是CMD 命令或ENTRYPOINT
        在本节实验中,我们依次先把这四项信息填入文档。Dockerfile中的#标志后面为注释,可以不用写,另外实验楼的环境不支持中文输入,比较可惜。

      依次输入下面的基本框架内容:

    复制代码

    # Version 0.1
    
    # 基础镜像
    FROM ubuntu:latest
    
    # 维护者信息
    MAINTAINER shiyanlou@shiyanlou.com
    
    # 镜像操作命令
    RUN apt-get -yqq update && apt-get install -yqq apache2 && apt-get clean
    
    # 容器启动命令
    CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

    7.创建镜像

    cd sshd_ubuntu

    docker build –t sshd:dockerfile

    如果出现了“successfully built XXX字样。

    8.测试镜像,运行容器

    docker run –d –p 10122:22 sshd:dockerfile

    三、web服务器与应用

    apache:

    在宿主机上准备的文件清单:

    Dockerfile
    #启动ssh和apache服务的角本
    run.sh

    以上文件都放到/root/apache_centos目录下

    mkdir -p /root/apache_centos
    cd /root/apache_centos

    基础镜像:以镜像centos为基础的开放SSH服务的镜像

    [root@localhost apache_centos]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    sshd                dockerfile          411d5fb16366        23 hours ago        278 MB
    centos              latest              0f73ae75014f        5 weeks ago         172.3 MB

    一、准备run.sh文件
    在/root/apache_centos目录新建run.sh

    vim run.sh

    内容如下:

    #!/bin/bash
    /usr/sbin/sshd &
    /usr/local/apache2/bin/httpd -D FOREGROUND
    • 1
    • 2
    • 3

    二、准备Dockerfile
    在/root/apache_centos目录新建Dockerfile

    vim Dockerfile
    • 1

    文件内容如下:

    #新生成的镜像是基于sshd:dockerfile镜像
    FROM sshd:dockerfile
    MAINTAINER by Steven
    #安装wget
    RUN yum install -y wget
    WORKDIR /usr/local/src
    #下载并解压源码包
    RUN wget http://apache.fayea.com/httpd/httpd-2.4.17.tar.gz
    RUN tar -zxvf httpd-2.4.17.tar.gz
    WORKDIR httpd-2.4.17
    #编译安装apache
    RUN yum install -y gcc make apr-devel apr apr-util apr-util-devel pcre-devel
    RUN ./configure --prefix=/usr/local/apache2  --enable-mods-shared=most  --enable-so
    RUN make
    RUN make install
    #修改apache配置文件
    RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /usr/local/apache2/conf/httpd.conf
    #启动apache服务
    RUN /usr/local/apache2/bin/httpd
    #复制服务启动脚本并设置权限
    ADD run.sh /usr/local/sbin/run.sh
    RUN chmod 755 /usr/local/sbin/run.sh
    #开放80端口
    EXPOSE 80
    CMD ["/usr/local/sbin/run.sh"]

    需要注意的是:在Dockerfile文件中更换当前目录不可以用“cd”命令,而要改用“WORKDIR”.
    三、生成镜像

    docker build -t apache_dockerfile:centos .
    • 1

    查看生成的镜像:

    [root@localhost apache_centos]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    apache_dockerfile   centos              f8f30b4a0ee8        24 minutes ago      440 MB
    apache              centos              f92c55dddd07        17 hours ago        423.9 MB
    sshd                dockerfile          411d5fb16366        23 hours ago        278 MB
    centos              latest              0f73ae75014f        5 weeks ago         172.3 MB

    四、根据镜像生成的容器并进行测试
    1、生成新的容器

     docker run -d -p 2222:22 -p 8000:80 apache_dockerfile:centos /usr/local/sbin/run.sh
    • 1

    将容器的22端口和80端口分别映射到到宿主机上的2222端口和8000端口,并运行服务脚本。

    2、查看新生成的容器:

    [root@localhost apache_centos]# docker ps -a
    CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS                      PORTS                                        NAMES
    ae560e497f39        apache_dockerfile:centos   "/usr/local/sbin/run   45 seconds ago      Up 44 seconds               0.0.0.0:2222->22/tcp, 0.0.0.0:8000->80/tcp   condescending_bardeen
    6490cd244c10        apache:centos              "/usr/local/apache2/   17 hours ago        Exited (0) 17 hours ago                                                  loving_wright
    673e946b57e4        sshd:dockerfile            "/usr/local/sbin/run   18 hours ago        Exited (137) 17 hours ago                                                reverent_bell

    3、测试
    测试apache

    [root@localhost apache_centos]# curl localhost:8000
    <html><body><h1>It works!</h1></body></html>

    成功!
    测试ssh

    [root@localhost apache_centos]# ssh localhost -p 2222
    root@localhost's password:

    成功!

  • 相关阅读:
    快速开发框架:进销存业务注意事项
    延时执行函数:前浪死在沙滩上
    新增筛选方案
    进销存数据库设计:采购订单
    SasS 设计原则十二因素
    四种线程池的解析
    高并发下的流量控制
    Mybatis 缓存机制
    谈谈JVM垃圾回收
    如何使错误日志更加方便地排查问题
  • 原文地址:https://www.cnblogs.com/zywu-king/p/8059788.html
Copyright © 2020-2023  润新知