zoukankan      html  css  js  c++  java
  • Dockerfile

    一.dockerfile介绍:

    Dockerfile:用来制作docker镜像的docker images(类) >>>容器(实列对象)
    docker镜像原理
    docker镜像的本质:分层 的文件系统
    docker中一个centos镜像为什么只有200MB,而一个cnetos操作系统的iso文件要几个G
    docker中一个镜像500Mb tomcat安装包只有70MB?
    #1.操作

    内存管理子系统
    进程调度子系统
    进程通信子系统
    设备管理子系统
    文件管理子系统
    linux文件系统由
    bootfs:
    包含bootloader(引导加载程序)和kernel(内核)
    和rootfs组成:
    root文件系统 包含的就是典型linux系统中的/dev /proc /bin /etc的标准目录和文件 
    
    网络通信子系统
    作业控制子系统

    #2.镜像原理
    docker镜像由特殊的文件系统叠加而成
    最低端的是bootfs,并使用宿主机的bootfs 也就是说我们的docker启动文件也是在bootfs 使用的linux的bootfs的内核 所以 启动非常快
    # 复用的操作
    第二层root文件系统rootfs称为base image
    #3.如何制作镜像:docker
    (1)拉取的容器转为镜像

    docker exec -it c_tomcat /bin/bash # 进入容器命令
    docker commit 容器id 镜像名称:版本号
    docker commit bd2f0fd36ea7 redis_images:1.0
    镜像转换成压缩文件:
    docker sava -o 压缩文件名称 镜像名称:版本号
    docker save -o itmy_tomcat.tar itmy_tomcat:1.0
    还原镜像:
    docker load -i 压缩文件名称
    # 试着删除原来的itmy_tomcat 镜像 docker rmi 镜像id
    docker load -i itmy_tomcat.tar

    (2)dockerfile制作镜像的一个文件,包含了一条条的指令;
    每一条指令构建一层,基于基础的镜像,最终构建出一个新的镜像


    二.Dockerfile
    dockerfile概念及作用
    1.dockerfile概念
    制作镜像的一个文件,
    包含了一条条的指令,
    每一条指令构建一层,基于基础的镜像,最终构建出一个新的镜像
    2、案列1需求:
    自定义centod7的镜像

    1.默认登录路径为/usr
    2.可以使用vim

    3.实现步骤
    1.定义父镜像:FROM cents:7
    创建文件目录
    mkdir docker-files
    cd docker_files
    vim dockerfile
    下载安装centos 镜像

    FROM centos:latest 
    #定义作者信息
    MAINTAINER itmofujin <it1024qq@163.cn>
    #执行安装命令
    RUN yum install -y vim # -y默认确认的意思
    #定义默认的工作目录
    WORKDIR /usr
    
    cmd /bin/bash # 执行目录

    执行:

    定义容器启动执行的命令
    docker build -f ./centos_dockerfile -t v1_centos:1 .
    查看docker images 镜像
    v1_centos 1 a11b2f0a8ff4 2 minutes ago 300 MB 
    创建并进入容器:
    docker run -it --name=cs1 v1_centos:1
    [root@e3db026ade15 usr]# cd ~
    [root@e3db026ade15 ~]# vim a.txt 执行成功vim可以使用


    案列二:
    定义dockerfile,发布django项目 :将来django项目想把他发布到我们的dockerfile
    1.定义父镜像:FROM java8
    2.定义作者信息:MAINTAINER itmofujin <it1024qq@163.cn>
    3.将ja包添加到容器:ADD jar包
    4定义容器执行启动命令:CMD view.py 或jar包
    vim python_dockerfile
    文件配置

    FROM python:3.6
    MAINTAINER itmofujin <it1024qq@163.cn>
    ADD views.py app01.py
    cmd app01.py # 伪的

    5.通过dockerfile构建镜像:docker built-f dockerfile文件路径-t镜像名称版本

    docker build -f ./python_dockerfile -t app01 .
    docker images
    》》》app01 latest 9bfe3b32134a 3 minutes ago 914 MB

    6.测试启动服务器代码:启动容器
    docker run -id -p 8001:8000 app01
    前台访问:122.51.24.98:8001
    执行代码


    三.docker服务编排
    服务编排概念
    Dcker Compose 工具概述 类似微服务和k8s 同时创建多个容器集群
    docker compose是一个编管理容器化应的完整开发周期令集,
    括服务=构建,启动和停止,使用步骤:

    1.利用dockerfile定义运行环境镜像
    2.使用docker-compose.yml定义组成应用的各服务
    3.运行docker-compose 启动应用


    四.docker私有仓库库:管理我们自己的镜像
    搭建私有仓库
    1.hub.docker.com 大的镜像苍库
    #拉取私有仓库镜像
    docker pull registry
    2.启动私有仓库:后台运行
    docker run -id --name=registry -p 5000:5000 registry
    3.打开浏览器外部访问:
    http://122.51.24.98:5000/v2/_catalog
    返回json字符串:{"repositories":[]}
    4.修改权限:信任私有仓库
    vim /etc/docker/daemon.json :https://o5le1qfe.mirror.aliyuncs.com
    "registry-mirrors": ["https://o5le1qfe.mirror.aliyuncs.com"]
    # 将私有仓库服务器ip修改为自己私有仓库服务器真实IP

    {
    "registry-mirrors": ["https://o5le1qfe.mirror.aliyuncs.com"],
    
    "insecure-registries":["122.51.24.98:5000"] #外部访问
    }

    docker exec registry rm -rf /var/lib/registry/docker/registry/
    5.重启docker服务
    systemctl restart docker
    docker start registry
    6.将centos镜像上传到我们的私有仓库
    docker tag centos:latest 122.51.24.98:5000/centos:latest # ok tag 只是做个新标记
    7.将镜像上传到私有苍库
    docker push 122.51.24.98:5000/centos
    访问http://122.51.24.98:5000/v2/_catalog >>>{"repositories":["centos"]} 完成
    8.将私有镜像拉取到本地
    docker pull 122.51.24.98:5000/centos



  • 相关阅读:
    保存会话数据——cookie学习
    HttpServletRequest学习
    HttpServletResponse 学习
    Servlet学习
    Http协议简单学习笔记
    利用tomcat配置网站
    PHPCMS-V9 获取一级栏目、二级栏目、三级栏目
    PHP判断当前访问的是 微信、iphone、android 浏览器
    二维数组根据某个字段排序
    动物界的再生一个故事
  • 原文地址:https://www.cnblogs.com/mofujin/p/12556546.html
Copyright © 2011-2022 走看看