zoukankan      html  css  js  c++  java
  • DOCKER 学习笔记2 认识dockerfile自定义镜像

    Dockerfile 概念

    Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数、库、资源配置。可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时候,却需要用一些操作将这两个镜像组合在一起,比如要构建一个Nginx容器。

    1. 那首先需要一个操作系统、比如Centos
    2. 然后在这个操作系统里面下载NGINX
    3. 配置Nginx 监听端口等等。

    这样是不是一个容器就构建出来了。这个容器是独立运行的一个操作系统。

    镜像和容器的关系

    镜像运行起来就成为了容器。一个镜像可以生成多个容器。这就好比是两种状态。

    Dockerfile 格式

    
    # 指定基础镜像信息
    FROM centos:centos7
    
    # 维护者信息
    MAINTAINER mrc xxx@qq.com
    
    # 镜像操作命令 RUN 用来操作
    RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    RUN yum -y update
    
    RUN yum install -y epel-release
    
    RUN yum install -y nginx
    
    #RUN echo '<h1>hello world docker</h1>' >> /usr/share/nginx/html/index.html
    
    # 容器启动执行命令
    CMD /usr/sbin/nginx
    
    

    一个Dockerfile 文件包含的内容有这四部分。开始就要指定基础镜像信息。以及维护者信息。而后通过RUN 命令执行镜像操作命令,用来操作基础镜像。

    CMD 指令允许用户指定容器的默认执行的命令。此命令会在容器启动且 docker run 没有指定其他命令时运行。

    构建镜像

    通过刚才的Dockerfile 文件,我们已经自定义了一个指定的镜像文件。现在用这个镜像构建文件来生成一个我们自定义的镜像。

    docker build 命令会根据当前目录Dockerfile 文件以及上下文构建新的镜像。

    上下文所指的是当前目录或者一个git 仓库地址。构建上下文会遍历子目录递归进行处理。可以通过.dockerignore文件忽略上下文目录当中的不需要要的子目录

    通常在一个新的文件夹下放置Dockerfile 文件进行构建。

    mkdir -p docker
    
    cd docker
    
    vi Dockerfile
    
    ## 加入以下内容
    FROM nginx
    RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
    
    # 开始构建 注意有一个点 -t 代表加入标签
    docker build -t test:v1 .
    
    

    image.png

    运行镜像

    docker run --name docker_test -d -p 8080:80 test:v1
    
    • test表示名称 v1表示标签或者也叫版本
    • --name 表示运行时候的名称
    • -d 后台运行
    • -p 端口映射 将本机8080端口映射到nginx 80端口

    image.png

    访问本机IP+8080端口
    image.png

    动态修改

    要是我想要修改这个容器内的内容呢?当然也有可以交互的命令行

    docker exec -it docker_test bash
    
    • -i 即使没有连接,也保持STDIN打开
    • -t 分配给伪TTY
    • bash 即命令处理器

    image.png

    刷新查看内容的改变
    image.png

    查看容器内容的改变

    docker diff xxx
    

    容器的操作

    
    
    ### 容器停止
    docker container stop name
    
    ### 启动已经停止掉的容器
    docker container start xxx
    
    ### 重启容器
    docker container restart xxx
    
    

    参考

    https://www.cnblogs.com/ityouknow/p/8588725.html

  • 相关阅读:
    虚拟机docker开启服务,本地无法进行访问
    make编译提示:make cc Command not found 解决办法
    yum -y install git 无法安装...提示There are no enabled repos.
    linux 安装mysql
    linux 配置环境变量
    HTML5第三天 无序有序列表、相对绝对路径
    JavaScript第一天
    HTML第二天
    mysql流程控制语句
    mysql存储过程和函数
  • 原文地址:https://www.cnblogs.com/ChromeT/p/12274480.html
Copyright © 2011-2022 走看看