洞察探索如何利用兼容微信生态的小程序容器,实现跨平台开发,助力金融和车联网行业的数字化转型。
602
2022-11-17
入门Docker
Docker简介(构建、安装、运行、任何应用在任何地点) 是什么 解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术 Docker三要素:仓库Docker Hub存放镜像、镜像、容器 能干嘛 有了容器,就可以将软件运行所需的资源环境打包到一个隔离的容器中 容器内没有自己的内核,而且也没有进行硬件虚拟,因此容器要比传统虚拟机更轻便 缩小版浓缩版Linux系统 虚拟机的缺点:资源占用多、冗余步骤多、启动慢, Linux容器不是模拟一个完整操作系统,而是对进程进行隔离, 去哪下
Docker安装 前提条件:运行在CentOS-7上,要求系统为64位,系统内核版本为3.10以上 查看版本:uname -r 运行在CentOS-6.5或更高的版本上,要求系统为64,内核版本为2.6.32-431或更高版本 Docker架构 Client Containers / Images Registry(阿里云、网易云) docker build 容器Redis 镜像含 仓库中含 docker pull 容器Nginx Redis、Nginx Redis、Nging docker run 容器Rs+Nx 镜像 镜像/容器/仓库 镜像就是一个只读的模板,镜像可以创建多个Docker容器,如:类和对象/容器好比是镜像的一个个实例 容器可以看做简易版Linux环境(中包括root用户权限、进程空间、用户空间、网络空间)和运行在其中的应用程序;Docker版CentOS仅为170M,只用了Linux内核 仓库分为公开库和私有库两种形式,国内公开库一般使用阿里云和网易云 有镜像才能创建容器,这是根本 安装步骤(CentOS-6.8) yum install -y epel-release yum install -y docker-io 安装后的配置文件:/etc/sysconfig/docker 启动Docker后台服务:service docker start 验证:docker version
安装步骤(CentOS-7)
docker run hello-world运行后会提示:Pulling from hello-world表示:本地没有改镜像,会自动-hello-world镜像并在容器内运行。 Docker是怎么工作的? Docker是Client-Server结构的,Docker守护进程运行在主机上, 通过Socket连接从客户端访问守护进程,接收命令并管理运行在主机上的容器
为什么Docker运行比vm快? 镜像较大 镜像小 面向硬件的 面向软件的 虚拟机是分钟级的,Docker是秒级的不需要硬件虚拟,而不像vm需要处理cpu/内存消耗 Docker常用命令 技术都是想通的、万变不离其宗 命令分类:镜像命令、容器命令、帮助命令 帮助命令: docker version 版本 docker info 版本描述 docker --help 帮助命令 (Linux:man帮助、marik创建目录、touch创建文件、pwd当前位置) 镜像命令(好几层!,分层) docker images 列出本地所有镜像:REPOSITORY:标识镜像的仓库源,TAG镜像的标签,IMAGEID镜像ID,CREATED镜像创建时间,SIZE:镜像大小 -a 列出本地所有镜像的(中间层) -q 只显示镜像ID --digests --no-trunc、 docker search 某个xxx镜像名称:如tomcat -s 30 tomcat 过滤列出超过点赞数量的 docker pull tomcat -下来 docker rmi -f hello-world:3.2 (-f:强制删除) docker rmi -f hello-world nginx (-f:删除多个) 容器命令 docker run -it centos 新建并启动交互式容器 --name mycentos0115 centos 容器别名 -i 以交互模式运行容器 -t 为容器分配终端, 通常和-i同时使用 -d 后台运行容器,返回容器ID,即为守护式容器 -P 随机端口映射 -p 指定端口映射,有以下四种格式 ip:hostPort:containerPort ip::containerPort hostPort:containerPort containerPort docker ps 查看已启动的容器 -a 历史运行记录 -l 上一次运行的 -n 3 上3次运行的 -q 只显示容器编号 exit 容器退出停止 Ctrl+P+Q 容器退出不停止 docker start 容器ID编号, 启动容器
docker restart 容器ID编号,重启容器 docker stop 容器ID编号,关闭容器 docker kill 容器ID编号,强制关闭容器
docker rm 容器ID编号,删除容器
重点 docker run -d centos 启动容器守护进程 (有些需要运行后台或前台,Docker容器后台运行,必须有一个前台进程) docker run -d centos /bin/sh -c"while true;do echo hello zzyy;sleep 2;done" docker logs -t -f --tail 3 容器ID编号, 查看容器日志 docker top 容器ID编号,查看容器内运行的进程
Docker容器数据卷(-v 添加容器卷) 做持久化,容器间的共享数据,类似rdb,aof 特点: 数据卷可在容器之间共享或重用数据 卷中的更改可以直接生效 数据卷中的更改不会包含在镜像的更新中 数据卷的生命周期一直持续到没有容器使用它为止 容器内添加 命令: 1.docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名 docker run -it -v /myDataVolume:/dataVolumeContainer centos 2.查看数据卷是否挂载成功 docker inspect 容器ID编号 3.容器和宿主机之间数据共享 vi host.txt,同步(容器)也会创建 4.容器停止退出后,主机修改后数据是否同步 exit vi host1.txt 是同步 5.命令(带权限) docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 docker run -it -v /myDataVolume:/dataVolumeContainer:ro centos:只允许容器读,不可写 JavaEE Hello.java ==> Hello.class Docker images ==> DockerFile
DockerFile方式 添加 容器数据卷 1.根目录下新建mydocker文件夹进入 2.可在Dockerfile中使用"VOLUME指令"来给镜像添加一个或多个数据卷 3.DockerFile构建 # volume test FROM centos VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finished,----------success1" 打印 CMD /bin/bash 4.build后生成镜像 docker build -f /mydocker/Dockerfile -t zzyy/centos . docker images 5.run容器 docker run -it zzyy/centos (通过DockerFile方式没有指定宿主机目录也会默认有) docker ps docker inspect 容器ID编号 vi host1.txt 数据卷容器(容器间传递共享--volumes-from) 容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止!
docker run -it --name dc01 zzyy/centos(//zzyy/centos自己的新建的容器) docker run -it --name dc02 --volumes-from dc01 zzyy/centos
docker run -it --name dc03 --volumes-from dc01 zzyy/centos
docker attach dc01 pwd ll 父到子容器,子到父容器都可共享
DockerFile体系结构(保留字指令) FROM 继承、当前镜像基于那个镜像 MAINTAINER 描述 RUN 容器构建时需要运行的命令,如要需-的命令 EXPOSE 容器对外暴露的端口 WORKDIR 启动时容器时的根目录,默认是:/ 根目录(pwd) ENV 设置环境变量 ADD 拷贝压缩文件 COPY 拷贝 VOLUME 创建容器数据卷、用于数据保存/持久化工作 CMD 容器启动时运行的命令(可有多个、但只最后一个生效) ENTRYPOINT 和CMD类似、CMD在人工写了时候会被覆盖、ENTRYPOINT会追加并不覆盖 ONBUILD 类似于触发器 自定义镜像(案例) 编写 from centos MAINTAINER 王路凯 18303051935@163.com
ENV mypath /tmp Workdir $mypath
RUN yum -y install vim RUN yum -y install net-tools
Expose 80 CMD "bin/bash" build docker build -f /mydocker/Dockerfile2 -t mycentos:1.3 docker images run docker run -it mycentos:1.3 -ls (会覆盖CMD)
查看镜像生成时变更历史: docker history 容器ID编号
案例定义tomcat9镜像 留给自己将来的作业!!! --privileged=true//写软权限不够的话加 docker exec 容器ID编号 java -version
主机中改了项目,容器中的web项目也改(通过容器卷) push 没讲呢(发布阿里云用)
Docker常用安装 自己安装Tomcat 自己安装Mysql 自己安装Redis
本地镜像发布到阿里云
创建镜像两种方式:Dockerfile ,commit 找脑图!
------------------------------------------------------------------------------
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~