当前位置: 首页 > news >正文

优化问题网站如何建设手机版网站

优化问题网站,如何建设手机版网站,销售网站是什么,寿光哪里做网站关于docker 一、基本概念什么是docker?docker组件#xff1a;我们能用docker做什么Docker与配置管理#xff1a;Docker的技术组件Docker资源Docker与虚拟机对比 二、安装docker三、镜像命令启动命令帮助命令列出本地主机上的镜像在远程仓库中搜索镜像查看占据的空间删除镜像… 关于docker 一、基本概念什么是docker?docker组件我们能用docker做什么Docker与配置管理Docker的技术组件Docker资源Docker与虚拟机对比 二、安装docker三、镜像命令启动命令帮助命令列出本地主机上的镜像在远程仓库中搜索镜像查看占据的空间删除镜像下载镜像 四、容器命令启动容器交互模式启动容器列出正在运行的容器日志-运行进程-内部细节启动停止重启容器删除容器启动守护式容器进入正在运行的容器 五、容器数据卷六、下载加速配置七、搭建docker私有仓库Registry八、Dockerfile九、虚悬镜像 一、基本概念 什么是docker? Docker是一个能把开发的应用程序自动部署到容器的开源引擎。由docker公司团队编写基于Apache2.0开源授权协议发行。 docker职责的逻辑分离使用docker开发人员只需要关心容器中运行的应用程序运维人员只需要关心如何管理容器。docker设计目的之一就是加强开发人员写代码的开发环境和应用程序要部署的生成环境的一致性从而降低”开发时以切正常肯定是运维的问题“的风险。 docker具有快速、高效的开发生命周期它能缩短代码从开发、测试到部署、上线运行的周期让应用程序具备可移植性易于构建并易于协作。 docker鼓励面向服务的架构docker推荐单个容器只运行一个应用程序这样可形成分布式的应用程序模型。在这种模型下应用程序或服务可表示为一系列内部互联的容器从而使分布式部署应用程序扩展或调试应用程序变得非常简单同时提高了程序的内省性。当然也可一个容器运行多个进程的应用程序 docker组件 docker客户端和服务器 docker镜像 Registry; docker容器。 dokcer客户端和服务器 docker是采用C/S架构程序客户端只需要向docker服务器或守护进程发出请求服务器和守护进程将完成所有工作并返回结果。 docker镜像 镜像是docker世界的基石用户基于镜像来运行自己的容器镜像也是dokcer生命周期中的构建部分镜像是基于联合文件系统的一种层式的结构有一系列指令一步一步构建出来。例如 添加一个文件 执行一个命令 打开一个端口 也可以把镜像当作容器的源代码镜像体积很小易于分享、存储和更新。 Rigistry docker用Rigistry来保存用户构建的镜像Registry分公共和私有两种docker公司运营的公共Registry叫Docker Hub用户也可以在docker Hub注册账号分享并保存自己的镜像。有些私有镜像包含有源代码或专利信息等或者只在组织、团队内部可见的镜像。也可以架设自己的私有Rigistry私有Rigistry可受到防火墙的保护满足一些组织的特殊需求。 容器 容器是基于镜像启动起来的容器中可以运行一个或多个进程。docker可以帮助你构建和部署容器只需要把应用程序或服务打包放进容器即可。我们可以认为镜像是docker生命周期中构建或打包阶段而容器则是启动或执行阶段。总结起来docker容器就是 一个镜像格式 一系列标准的操作 一个执行环境 docker借鉴了标准集装箱的概念标准集装箱将货物运往世界各地docker将这个模型运用到自己的设计哲学中唯一不同是集装箱运输货物而docker运输软件。 每个容器都包含一个软件镜像也就是容器的货物与真正 的货物一样容器里的软件镜像可以进行一些操作例如镜像可以被创建、启动、关闭、重启以及销毁。docker执行上述操作时不关心里面有什么不管是web服务器还是数据库或者应用服务器所有容器都按照相同的方式将内容装载进去。 docker不关心你要把容器运到何方可以在笔记本构建容器上传到Rigistry然后找个物理或虚拟服务器测试再把容器部署到主机集群中去。像标准集装箱一样dokcer容器易于替换可以叠加易于分发并且尽量通用。 使用docker可以快速构建一个应用程序服务器、一个消息总线、一套实用工具、一个持续集成CI测试环境或者任意一种应用程序、服务或工具。 我们能用docker做什么 docker容器可以为各种测试环境提供很好的沙盒环境并且容器具有标准性的特征非常适合为服务创建构建块。docker应用场景如下 加速本地开发和构建流程使其更加高效、更加轻量化本地开发人员可以构建、运行并分享容器容器可以在开发环境中构建然后轻松提交到测试环境中并最终进入生产环境。 能够让独立服务或应用程序在不同的环境中得到相同的运行结果。这点在面向服务的架构和重度依赖微型服务的部署中尤其实用。 用docker创建隔离的环境来进行测试。例如用Jenkins CI这样的持续集成工具启动一个用于测试的容器。 docker可以让开发者在本机构建一个复杂的程序或架构来进行测试而不是一开始就在生产环境部署、测试。 构建一个多用户的平台即服务PaaS基础设施。 为开发、测试提供一个轻量级的独立沙盒环境或者将独立的沙盒环境用户技术教学如shell、编程教学。 提供软件即服务SaaS应用程序如Memcached即服务。 高性能、超大规模的宿主机部署。 Docker与配置管理 自动化运维工具Ansible、Puppet、chef。docker包含一套镜像构建和镜像管理的解决方案现代配置管理工具的原动力之一就是黄金镜像模型。 然而使用黄金镜像的结果就是充斥了大量、无管理状态的镜像镜像数量庞大、版本混乱不堪。随着镜像使用不确定性、环境混乱加剧镜像本身也越笨重最终不得不手动修正镜像不合符设计和难以管理的配置层因为底层的镜像缺乏适当的灵活性。 与传统镜像相比docker显得轻松镜像是分层的可以对其进行迅速迭代数据表明docker的特性确实可以减轻许多传统镜像管理的麻烦docker现在还难以完全取代配置管理工具但是从幂等性和内省性来看。取得了非常好的效果。 docker本身需要在主机上安装、管理和部署主机也需要被管理起来这样docker容器需要编配、管理和部署也经常需要与外部服务和工具通信而这些恰恰是配置管理工具所擅长。 docker显著的特点对不同宿主机、应用程序和服务会表现出不同的特性与架构docker可以是短生命周期的也可以用于恒定的环境。可以用一次即销毁也可以提供持久的服务。这些行为不会增加docker的复杂性也不会和配置管理工具产生重合。基于这些行为基本不需要担心管理状态的持久性也不必担心状态的复杂性因为容器的生命周期往往比较短而重建容器的代价通常也比传统的状态修复要低。 当然并非所有的基础设施都具备这样的特性在未来一段时间docker这种与理想化的工作负载可能会与传统的基础设备部署共存一段时间。长期运行的设备主机仍是很多组织中具有不可替代的地位由于多样化的管理需求以及管理docker的需求在绝大多数组织中docker和配置管理工具可能都需要部署。 Docker的技术组件 docker可以运行于任何现代linux内核的x64主机推荐内核时3.8及以上docker开销低可以用于台式机、笔记本。 一个原生的linux容器格式docker称为libcontainerlibcontainer也是现在dokcer容器的默认格式。 linux内核命名空间namespace用于隔离文件系统、进行和网络。 文件隔离系统每个容器都有自己的root文件系统。 进程隔离每个容器都运行在自己的进程环境中 网络隔离容器间的虚拟网络接口和IP地址都是分开的。 资源隔离和分组使用cgroups即control grouplinux内核特性之一将cpu和内存之类的资源独立分配给每个docker容器。 写时复制文件系统都是通过写时复制创建的这就意味着文件系统时分层的、快速的、而且占用的磁盘空间更小。 日志容器产生的STDOUT、STDERR和STDIN这些IO流会被收集并记入日志用来进行日志分析和故障排错。 交互式SHELL用户可以创建一个伪tty终端将其连接到STDIN为容器提供一个交互式的shell Docker资源 Docker官方主页 Docker Hub Docker官方文档 Docker官方博客 Docker与虚拟机对比 一、虚拟机 虚拟机virtual machine就是带环境安装的一种解决方案。 它可以在一种操作系统里面运行另一种操作系统比如在Windows10系统里面运行Linux系统CentOS7。应用程序对此毫无感知因为虚拟机看上去跟真实系统一模一样。 原来传统虚拟机技术基于主操作系统上的虚拟机管理系统VirtualBox 和 VMWare等创建虚拟机虚拟出各种硬件。在虚拟机上安装从操作系统在从操作系统种安装部署各种应用。 缺点资源占用多冗余步骤多启动慢 二、Docker Linux 容器是与系统其他部分隔离开的一系列进程从另一个镜像运行并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项因而在从开发到测试再到生产的整个过程中它都具有可移植性和一致性。 Linux 容器不是模拟一个完整的操作系统而是对进程进行隔离。有了容器就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同不需要捆绑一整套操作系统. Docker 容器是在操作系统层面上实现虚拟技术直接复用本地主机操作系统虚拟机则是在硬件层面实现实现虚拟化。这使得 Dokcer 占用体积小、启动速度快。 Docker 来了什么变化 一次构建随处运行更快速的应用交付和部署通过加载镜像运行即可更便捷的扩容和缩容使应用扩容由原来的天级变为分钟级甚至秒级更简单的系统运维运维同学不再受环境配置的困扰更高效的计算资源利用一台物理机可以运行多个容器实例大大提升物理服务器的 CPU 和内存的利用率。 docker run含义 二、安装docker 1.安装前准备 uname -r #查看下内核版本建议3.10以上升级内核及升级系统包 yum -y update升级所有包同时也升级软件和系统内核​ yum -y upgrade只升级所有包不升级软件和系统内核2.卸载docker旧版本 docker version #查看当前docker版本 yum erase docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine \docker-ceyum可能会报告您没有安装这些软件包。/var/lib/docker/卸载 Docker 时不会自动删除存储的映像、容器、卷和网络。 删除相关配置文件 find /etc/systemd -name *docker* -exec rm -f {} \; find /etc/systemd -name *docker* -exec rm -f {} \; find /lib/systemd -name *docker* -exec rm -f {} \;3.安装docker 3.1 安装依赖gcc gcc-c yum -y install gcc gcc-c3.2 设置存储库 在新主机上首次安装 Docker Engine 之前需要设置 Docker 存储库。之后您可以从存储库安装和更新 Docker。 安装yum-utils软件包提供yum-config-manager 实用程序并设置存储库。 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-util 提供yum-config-manager功能另两个是devicemapper驱动依赖设置docker镜像源为阿里云的yum源作为docker仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.3 更新yum软件包索引 yum makecache fast #创建缓存非必选项3.4 查看docker可用版本 yum list docker-ce --showduplicates | sort -r3.5 安装docker 选择一个版本安装yum install docker-ce-版本号 yum -y install docker-ce-18.03.1.ce安装docker最新版yum install docker-ce docker-ce-cli containerd.io 3.6 启动docker并设置开机自启动 systemctl start docker systemctl enable dockersystemctl stop docker #停止3.7 测试docker是否安装成功 docker run hello-world三、镜像命令 启动命令 启动、停止、重启docker命令 启动docker: systemctl start docker停止docker: systemctl stop docker重启docker: systemctl restart docker查看docker状态; systemctl status docker开机启动: systemctl enable dqsker帮助命令 查看docker概要信息: docker info查看docker总体帮助文档: docker --help查看docker命令帮助文档: docker 具体命令 --help列出本地主机上的镜像 docker images -参数参数-a列出所有镜像含历史镜像-q只显示镜像ID-f过滤各个选项说明:REPOSITORY: 表示镜像的仓库源TAG: 镜像的标签版本号IMAGE ID: 镜像IDCREATED: 镜像创建时间SIZE: 镜像大小同一仓库源可以有多个 TAG版本代表这个仓库源的不同个版本我们使用 REPOSITORY:TAG 来定义不同的镜像。 如果你不指定一个镜像的版本标签例如你只使用 ubuntudocker 将默认使用ubuntu:latest 镜像 查看本地仓库镜像 docker images -a在远程仓库中搜索镜像 docker search 镜像名称默认取docker hub中搜索参数-f过滤--limit 数量只展示前几项举例docker search redis --limit 5镜像名称[:tag]参数tag为标签版本号默认下载最新版 举例docker pull ubuntu查看占据的空间 docker system df 查看镜像Images/容器Containers/数据卷Local Volumes所占的空间删除镜像 docker rmi 镜像名称/ID docker rmi -f hello-world #强制删除 docker rmi 镜像1 镜像2 镜像3 #可以使用空格分隔删除多个镜像 docker rmi -f $(docker images -qa) #删除全部下载镜像 docker pull 镜像名称 举例 docker pull tomcat docker pull redis docker pull unbuntu docker pull mysql:5.7四、容器命令 启动容器 2.5.1 新建启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用的参数- --name为容器指定一个名称- -d后台运行容器并返回容器ID也即启动守护式容器- -i以交互模式interactive运行容器通常与-t同时使用- -t为容器重新分配一个伪输入终端tty通常与-i同时使用。也即启动交互式容器前台有伪终端等待交互- -e为容器添加环境变量- -P随机端口映射。将容器内暴露的所有端口映射到宿主机随机端口- -p指定端口映射-p指定端口映射的几种不同形式- -p hostPort:containerPort 端口映射例如-p 8080:80- -p ip:hostPort:containerPort 配置监听地址例如 -p 10.0.0.1:8080:80- -p ip::containerPort 随机分配端口例如 -p 10.0.0.1::80- -p hostPort1:containerPort1 -p hostPort2:containerPort2 指定多个端口映射例如-p 8080:80 -p 8888:3306举例 docker run -it ubuntu /bin/bash 交互模式启动容器 进入交互模式 运行容器时可以使容器进入交互模式便于管理命令如下 docker run -it --namemyu01 ubuntu bash #ubuntu交互模式自定义容器名称myu01-i 交互模式-t 分配一个伪输入终端ttyubuntu 镜像名称bin/bash或者bash shell交互的接口例如 docker run -it ubuntu /bin/bash docker run -it --namemyu01 ubuntu bash -#ubuntu交互模式自定义容器名称myu01退出交互模式 1 方式1在交互shell中输入exit即可退回宿主机但是容器会停止;2 方式2使用快捷键ctrl P Q容器仍然在运行 列出正在运行的容器 docker ps [OPTIONS]常用参数-a列出当前所有正在运行的容器历史上运行过的容器-l显示最近创建的容器-n显示最近n个创建的容器-q静默模式只显示容器编号docker ps -n 1 日志-运行进程-内部细节 docker logs 容器ID或容器名 #查看容器日志 docker top 容器ID或容器名 #查看容器内运行的进程 docker inspect 容器ID或容器名 #查看容器内部细节启动停止重启容器 docker start 容器ID或容器名 #启动已经停止的容器 docker restart 容器ID或容器名 #重启容器 docker stop 容器ID或容器名 #停止容器 docker kill 容器ID或容器名 #强制停止容器删除容器 docker rm 容器ID或容器名 #删除容器(删除容器是 docker rm删除镜像是 docker rmi注意区分) docker rm -f 容器ID或容器名 #强制删除正在运行的容器一次删除多个容器实例 docker rm -f ${docker ps -a -q}docker ps -a -q | xargs docker rm启动守护式容器 -d后台运行容器并返回容器ID也即启动守护式容器 docker run -d redis 进入正在运行的容器 #进入正在运行的容器(进入正在运行的容器并以命令行交互) docker exec -it 容器ID l #重新进入正在运行的容器(exit退出会导致容器停止) docker attach 容器ID docker exec 和 docker attach 区别 - attach直接进入容器启动命令的终端不会启动新的进程用exit退出会导致容器的停止 - exec是在容器中打开新的终端并且可以启动新的进程用exit退出不会导致容器的停止如果有多个终端都对同一个容器执行了 docker attach就会出现类似投屏显示的效果。一个终端中输入输出的内容在其他终端上也会同步的显示。 举例 docker exec -it e36c0f50ec13 bash2.5.9 容器和宿主机文件拷贝 docker cp 容器ID:容器内路径 目的主机路径 #容器内文件拷贝到宿主机 docker cp 主机路径 容器ID:容器内路径 #宿主机文件拷贝到容器中举例 docker cp 79443d0c6126:/tmp/josh.txt /tmp docker cp /tmp/askage.sh 79443d0c6126:/tmp2.5.10 导入和导出容器 export导出容器的内容流作为一个tar归档文件对应import命令 import从tar包中的内容创建一个新的文件系统再导入为镜像对应export命令导出docker export 容器ID tar文件名 docker export 79443d0c6126 myu10.tar #会导出到linux服务器你所在的目录下导入 cat tar文件 | docker import - 自定义镜像用户/自定义镜像名:自定义镜像版本号 cat myu10.tar | docker import - test/ubuntu_my:1.1 #导入后用docker images确认 docker run -it 1d5b4b7fb0c8 bash #重启导入的test/ybuntu_my系统2.5.11 提交容器副本使之成为一个新的镜像 docker commit -m提交的描述信息”-a作者”容器ID 要创建的目标镜像名:[标签名] docker commit -mvim cmd add”-ajosh” e36c0f50ec13 vim_ubuntu:1.3五、容器数据卷 1.容器数据卷的概念 卷就是目录或文件存在于一个或多个容器中由docker挂载到容器但不属于联合文件系统因此能够绕过UnionFS提供一些用于持续存储或共享数据。 特性卷设计的目的就是数据的持久化完全独立于容器的生存周期因此Docker不会在容器删除时删除其挂载的数据卷。 特点 数据卷可以在容器之间共享或重用数据卷中的更改可以直接实施生效数据卷中的更改不会包含在镜像的更新中数据卷的生命周期一直持续到没有容器使用它为止 2.运行一个带有容器卷存储功能的容器实例 docker run -it --privilegedtrue -v 宿主机绝对路径目录:容器内目录[rw | ro] 镜像名 3.查看容器绑定的数据卷可以使用docker inspect权限 rw读写 ro只读。如果宿主机写入内容可以同步给容器内容器内可以读取。 4.容器卷的继承启动一个容器 docker run -it --privilegedtrue /tmp/test:/tmp/docker --name u1 ubuntu /bin/bash使用 --volumes-from 继承 u1的容器卷映射配置 docker run -it --privilegedtrue --volumes-from u1 --name u2 ubuntu 5.例1主机与容器双向互写文件 docker run -it --privilegedtrue -v /tmp/host_data:/tmp/docker_data --nameu1 ubuntu touch touch /tmp/docker_data/aaa.txtll /tmp/host_data/ #宿主机查看同步情况7.例2容器只读主机写入 docker run -it --privilegedtrue -v /tmp/mydocker/u:/tmp/u:ro --name u2 ubuntu所有命令示意图 六、下载加速配置 登录阿里云搜索容器镜像服务 安装升级Docker客户端 推荐安装1.10.0以上版本的Docker客户端参考文档docker-ce 配置镜像加速器 针对Docker客户端版本大于 1.10.0 的用户 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 mkdir -p /etc/docker tee /etc/docker/daemon.json -EOF {registry-mirrors: [https://edfnnsgx.mirror.aliyuncs.com] } EOF重载docker systemctl daemon-reload systemctl restart docker七、搭建docker私有仓库Registry Docker Registry是官方提供的工具用于构建私有镜像仓库。 3.1 环境搭建 Docker Registry也是Docker Hub提供的一个镜像可以直接拉取运行。 1.拉取镜像 docker pull registry2.启动Docker Registry docker run -d -p 5000:5000 -v /app/myregistry/:/tmp/registry --privilegedtrue registry3.验证查看私服中的所有镜像Registry会返回json格式的所有镜像目录 curl http://192.168.31.22:5000/v2/_catalog #IP和端口为docker主机IP3.2 向Registry私仓中上传镜像 从Hub上下载ubuntu镜像到本地并成功运行 docker pull ubuntu docker run -it ubuntu /bin/bash原始的ubuntu镜像是不带着ifconfig命令的,外网连通的情况下安装ifconfig命令并测试通过 apt-get update apt-get install -y net-tools安装完成后commit我们自己的新镜像 docker commit -mifconfig cmd add -ajosh 7d651c27c792 joshubuntu:1.2启动我们的新镜像并和原来的对比 docker stop 7d651c27c792 #停掉原来的ubuntu docker images docker run -it 90c4fb740827 /bin/bash #启动个新的测试ifconfig将新镜像修改符合docker镜像规范按照公式docker tag 镜像Tag Host:Port/Repository:Tag自己host主机IP地址填写同学你们自己的不要粘贴错误使用命令 docker tag 将joshubuntu:1.2 这个镜像修改为 192.168.31.233:5000/zzyyubuntu:1.2 docker tag joshubuntu:1.2 192.168.31.223:5000/joshubuntu:1.2 docker images #检验配置docker允许接收http请求 修改/etc/docker/daemon.json添加insecure-registries允许http {registry-mirros: [https://xxxx.mirror.aliyuncs.com],insecure-registries: [192.168.xxx.xxx:5000] }然后重启docker新版本的docker会立即生效 centos6 的命令 chkconfig daemon-reload service docker restartcentos7 的命令 systemctl daemon-reload systemctl restart docker重启容器 docker run -d -p 5000:5000 -v /app/myregistry/:/tmp/registry --privilegedtrue registry3.3 推送到私仓 1.添加一个对应私仓地址的tag 推送到私服库 docker push 192.168.31.223:5000/joshubuntu:1.2再次验证私服库 curl http://192.168.31.223:5000/v2/_catalog3.4 pull到本地并运行 1.复制一份到主机 将192.168.31.223:5000/joshubuntu复制一份到主机可忽略次步骤 docker run -it 90c4fb740827 /bin/bash #运行一个192.168.31.223:5000/joshubuntu虚拟机docker export d44bf231d4e2 bak.tar #将虚拟机打包到Linux docker rmi -f 90c4fb740827 #删掉原有的包2.pull到本地 curl -XGET http://192.168.31.223:5000/v2/_catalog docker pull 192.168.31.223:5000/joshubuntu:1.2八、Dockerfile 1 Dockerfile概念 Dockerfile是用来构建Docker镜像的文本文件是由一条条构建镜像所需的指令和参数构成的脚本。 1.1 构建步骤 1.编写Dockerfile文件 2.docker build 命令构建镜像 3.docker run 依据镜像运行容器实例 1.2 构建过程 Dockerfile编写 每条保留字指令都必须为大写字母且后面要跟随至少一个参数指令按照从上到下顺序执行#表示注释每条指令都会创建一个新的镜像层并对镜像进行提交 Docker引擎执行Docker的大致流程 1.docker从基础镜像运行一个容器 2.执行一条指令并对容器做出修改 3.执行类似docker commit的操作提交一个新的镜像层 4.docker再基于刚提交的镜像运行一个新容器 5.执行Dockerfile中的下一条指令直到所有指令都执行完成 2 Dockerfile保留字 1 FROM 基础镜像当前新镜像是基于哪个镜像的指定一个已经存在的镜像作为模板。Dockerfile第一条必须是FROM FROM 镜像名 FROM hub.c.163.com/library/tomcat MAINTAINER 镜像维护者的姓名和邮箱地址 非必须 -MAINTAINER ZhangSan zs163.com RUN 容器构建时需要运行的命令。有两种格式 shell格式 等同于在终端操作的shell命令 格式RUN 命令行命令 RUN yum -y install vim# 格式RUN [可执行文件 , 参数1, 参数2] RUN [./test.php, dev, offline] # 等价于 RUN ./test.php dev offlineRUN是在docker build时运行 EXPOSE 当前容器对外暴露出的端口。 # EXPOSE 要暴露的端口 # EXPOSE port[/protocol] .... EXPOSE 3306 33060WORKDIR 指定在创建容器后 终端默认登录进来的工作目录。 ENV CATALINA_HOME /usr/local/tomcat WORKDIR $CATALINA_HOMEUSER 指定该镜像以什么样的用户去执行如果不指定默认是root。一般不修改该配置 # USER user[:group] USER patrickENV 用来在构建镜像过程中设置环境变量。这个环境变量可以在后续的任何RUN指令或其他指令中使用 # 格式 ENV 环境变量名 环境变量值 # 或者 ENV 环境变量名值 ENV MY_PATH /usr/mytest# 使用环境变量 WORKDIR $MY_PATHVOLUME 容器数据卷用于数据保存和持久化工作。类似于 docker run 的-v参数。 # VOLUME 挂载点 # 挂载点可以是一个路径也可以是数组数组中的每一项必须用双引号 VOLUME /var/lib/mysqlADD 将宿主机目录下或远程文件的文件拷贝进镜像且会自动处理URL和解压tar压缩包。 COPY 类似ADD拷贝文件和目录到镜像中。 将从构建上下文目录中源路径的文件目录复制到新的一层镜像内的目标路径位置。 COPY src dest COPY [src, dest] # src源路径源文件或者源目录 # dest目标路径容器内的指定路径该路径不用事先建好。如果不存在会自动创建CMD 指定容器启动后要干的事情。 有两种格式 - shell格式 # CMD 命令 CMD echo hello worldexec格式 # CMD [可执行文件, 参数1, 参数2 ...] CMD [catalina.sh, run]参数列表格式 # CMD [参数1, 参数2 ....]与ENTRYPOINT指令配合使用Dockerfile中如果出现多个CMD指令只有最后一个生效。CMD会被docker run之后的参数替换。 例如对于tomcat镜像执行以下命令会有不同的效果 # 因为tomcat的Dockerfile中指定了 CMD [catalina.sh, run] # 所以直接docker run 时容器启动后会自动执行 catalina.sh run docker run -it -p 8080:8080 tomcat# 指定容器启动后执行 /bin/bash # 此时指定的/bin/bash会覆盖掉Dockerfile中指定的 CMD [catalina.sh, run] docker run -it -p 8080:8080 tomcat /bin/bashCMD是在docker run时运行而 RUN是在docker build时运行。 ENTRYPOINT 用来指定一个容器启动时要运行的命令。 类似于CMD命令但是ENTRYPOINT不会被docker run后面的命令覆盖这些命令参数会被当做参数送给ENTRYPOINT指令指定的程序。 ENTRYPOINT可以和CMD一起用一般是可变参数才会使用CMD这里的CMD等于是在给ENTRYPOINT传参。 当指定了ENTRYPOINT后CMD的含义就发生了变化不再是直接运行期命令而是将CMD的内容作为参数传递给ENTRYPOINT指令它们两个组合会变成 “”。 例如 FROM nginxENTRYPOINT [nginx, -c] # 定参 CMD [/etc/nginx/nginx.conf] # 变参对于此Dockerfile构建成镜像 nginx:test后如果执行- docker run nginx test则容器启动后会执行 nginx -c /etc/nginx/nginx.conf - docker run nginx:test /app/nginx/new.conf 则容器启动后会执行 nginx -c /app/nginx/new.conf3 构建镜像 创建名称为Dockerfile的文件示例 FROM ubuntu MAINTAINER leeleexxx.comENV MYPATH /usr/local WORKDIR $MYPATHRUN apt-get update RUN apt-get install net-toolsEXPOSE 80CMD echo $MYPATH CMD echo install ifconfig cmd into ubuntu success ..... CMD /bin/bash编写完成之后将其构建成docker镜像。 命令 # 注意定义的TAG后面有个空格空格后面有个点 # docker build -t 新镜像名字:TAG . docker build -t ubuntu:1.0.1 .九、虚悬镜像 虚悬镜像仓库名、标签名都是 的镜像称为 dangling images虚悬镜像。 在构建或者删除镜像时可能由于一些错误导致出现虚悬镜像。 例如 # 构建时候没有镜像名、tag docker build .列出docker中的虚悬镜像 docker image ls -f danglingtrue虚悬镜像一般是因为一些错误而出现的没有存在价值可以删除 # 删除所有的虚悬镜像 docker image prune参考《第一本docker书》内容 参考尚硅谷docker教学视频
http://www.hkea.cn/news/14386887/

相关文章:

  • 在哪能学到网站建设软件外包学院大学承认吗
  • 有哪些网站可以免费看新宫网站建设公司
  • 吉林省建设厅网站特殊工种wordpress前端个人中心
  • 阿里云网站空间做商城流程wordpress 豆瓣电台
  • 织梦dedecms医院类网站在线预约挂号插件_utf8银川市建设诚信平台网站
  • 公司网站抄袭花都建网站公司
  • 厦门网站建设2015中铁建工集团有限公司官网
  • 全球云邮登陆网站wordpress自定义文章类型模板
  • 淄博网站开发招聘快速建站的模板
  • 上海网站开发有限公司建设目标网站
  • php怎么做网站后台网站建设wang.cd
  • 江门做网站软件html5网站模板 免费
  • 网站开发的重要性seo优化的搜索排名影响因素主要有
  • 企业网站如何制作小公司做网站需要什么条件
  • 河南省网站集约化建设品牌规划
  • 房山营销型网站建设网站建设营销词
  • 专做企业的p2p网站长汀网站建设
  • h5网站有哪些微信小程序制作过程
  • 网站图片上传不了怎么办建立网站心得
  • 校园官方网站如何制作培训机构网站如何建设
  • 村建站什么部门wordpress 虎嗅
  • 网站建设好了却收不到上海网站营销seo
  • 室内在线设计网站网站开发与设计实训报告
  • 福建工程网站建设团队led网站源码
  • 沈阳网站建设 龙兴科技含数据的wordpress
  • 美食网站需求分析湛江做网站咨询电话
  • 公司门户网站开发价格工作室是个体户还是公司
  • 工商注册在哪个网站龙岩新罗区建设局网站
  • 武胜建设局网站产品网络营销方案
  • 千户微建站平台合肥装修