zoukankan      html  css  js  c++  java
  • 【转】基于docker生成dockerfile镜像,并根据镜像生成容器服务,已docker下hyperf2.1安装为例

    0、先创建一个文件夹img

    mkdir img

    1、Linux上新建3个文件

    2、文件内容分别写入

    (1)Dockerfile

    # 基于的基础镜像centos
    FROM centos
    # 维护该镜像的用户信息
    MAINTAINER The CentOS Project<cloud-ops@centos.org>
    # 镜像中的操作指令:安装apache软件包
    RUN yum -y update
    RUN yum -y install httpd
    # 开启镜像中的80端口
    EXPOSE 80
    # 复制网址首页文件
    ADD index.html /var/www/html/index.html
    # 将执行脚本复制到镜像中
    ADD run.sh /run.sh
    RUN chmod 775 /run.sh
    # 启动容器时执行脚本
    CMD ["/run.sh"]

    (2)index.html中

    web test

    (3)run.sh中

    #!/bin/bash
    rm -rf /run/httpd/*
    exec /usr/sbin/apachectl -D FOREGROUND

    说明:

    rm -rf /run/httpd/*     清理httpd的缓存
    exec /usr/sbin/apachectl -D FOREGROUND          启动apache服务

    3、使用Dockerfile生成镜像

    docker build -t httpd:centos  或者   docker build -f DockerfilePHP -t httpd:centos 

    -t  指定镜像标签

    -f 指定生成镜像默认的依赖文件。不使用时,默认依赖当前路径下的Dockerfile文件。

    后面就会使用刚才编写的Dockerfile自动创建生成镜像。可以看到整个创建过程中,每运行一次Dockerfile中的指令,都会给初始镜像加上新的一层。

    4、使用新的镜像运行容器

    docker run -d -it --name zidingyiContainer -p 48080:80 httpd:centos

      

    运行此命令前:先检查

    (1)docker images  新建镜像是否存在

    (2)netstat -an |grep 48080     宿主机中端口48080是否被占用,如果端口被占用就换一个端口号

    注意:80端口是容器中的端口,不用管

    或者

    docker run -dit --net=host  httpd2:centos

    --net=host 表示共享宿主机的网卡和端口,这样就不用做映射了。即docker内部80就会自动映射到外部80。

    运行此命令后:检查

    docker  ps -a

    看看该容器是否在运行(up)

    5、防火墙开放宿主机的端口49180

    firewall-cmd --zone=public --list-ports
    firewall-cmd --zone=public --add-port=48080/tcp --permanent
    firewall-cmd --reload

    6、浏览器访问

    ip:48080

    7、over

  • 相关阅读:
    GIT里 SSH和HTTPS的区别
    迷宫 DFS 算法
    全排列 DFS 模板
    独立岛问题的BFS,DFS求解
    红丝绒蛋糕
    BFS,DFS伪代码
    【转】一个时代的剪影----汉
    AlbertRender --- 实时&离线全局光照渲染器(一)
    【linux驱动笔记】linux模块机制浅析
    【linux驱动笔记】字符设备驱动相关数据结构与算法
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/15005226.html
Copyright © 2011-2022 走看看