您的位置: 游戏资讯 > 游戏问答

docker入门与实战,Docker技术入门与实战

来源:网络 浏览:46 2022-11-08 17:37:01

作者:张坚原文: https://segment fault.com/a/119000021098609

什么是文档?

Docker采用谷歌公司推出的Go语言开发实现,采用基于Linux内核的cgroup、namespace,以及AUFS系统的Union FS等技术对进程进行封装和隔离,是一种OS级虚拟化技术。 隔离过程独立于宿主和其他隔离过程,因此也称为集装箱。

基于容器,Docker大大简化了容器的创建和维护,包括文件系统、网络互连和进程隔离。 Docker技术比虚拟机技术更轻、更快。

请记住最重要的事情。 Dokcer实际上是宿主机的典型进程,这也是Dokcer与传统虚拟化技术的最大区别。

为什么使用Docker

使用Docker最重要的是,它可以保证运行环境的一致性,并在一次配置中多次运行,而不会出现开发、测试和生产不一致所导致的各种问题。 使用Docker可以加快APP应用程序的打包、测试和部署,并缩短从代码编写到部署的周期。

安装文件库

Docker要求CentOS系统的内核版本至少为3.10。 请检查此页上的前提条件,以查看CentOS版本是否支持Docker。 更新uname-ryum,升级到最新版本的yum update以卸载旧版本的docker。 如果存在,则yumremovedockerdocker-common docker-selinux docker-engine在运行此命令时会卸载docker本身,并且不会删除这些文件/var/Linux 检查yum仓库,如果使用的是使用docker ll /etc/yum.repos.d/的制造商的服务器( AlibabaCloud (阿里巴巴云)、腾云),一般都有docker仓库安装软件包。 yum-util提供yum-config-manager功能。 另外两个是设备映射器驱动所依赖的yum install-yyum-utils设备映射器-持续数据仓库yum-config-manager-add-radd-resistent-datalvm 2安装仓库docker-ce.Repodocker版本yumlistdocker-ce-- show duplicates|sort-r安装docker yum install docker-ce或更高版本的语句是安装的最新版本yum install docker-ce-启动安装中指定版本的dockersystemctl start docker,确保正确安装了dokcer run hello-worlddocker的重要命令

镜像相关

搜索镜像的docker search (如docker search nginx Docker )时,它会在Docker Hub中搜索包含关键字“nginx”的镜像仓库。 下载镜像的docker pull (如docker pull nginx Docker )时,会在Docker Hub上下载包含“nginx”的文件,镜像当然是dockerpullreg.Jian zh5.ch5。 删除镜像docker images删除镜像docker rmi (如docker rmi hello-world )与用于删除刚下载的hello-world的容器相关

镜像docker run的新启动命令主要使用以下选项 -d。 表示后台运行的 -P选项(大写)随机端口映射 -p选项(小写)端口映射,在主机主机端口后面加上容器端口,例如docker run nginx-p 8080 将容器的80个端口映射到宿主机的8080个端口,使用localhost:8080可以查看容器中nginx的欢迎页面 -v选项:挂载宿主机目录,前面是宿主机的目录例如,docker run-d-p80:80-v/docker data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx装载主机上的/dock 这个参数对测试很有用。 例如,命名docker run-d-p80:80-- rmnginx--name )容器。 否则,将显示名为docker run-nameniginx-d-p80:80-nginx容器列表docker ps的命令,从中可以列出当前正在运行的容器。 使用-a参数可列出所有容器,包括已停止的容器。 停止容器dockerstopdockerstop 5d 034 c6ea 010后跟容器ID。 或者,停止的容器docker start docker run将在新容器中启动,而docker start将启动停止的容器。 此命令重新启动容器docker restart,如docker start 5d034c6ea010,实际上是先运行docker stop,再运行docker start。 进入容器本身,如docker restart 5d034c6ea010;如docker exec -it容器id /bin/bash;如docker exec-it 5d 034 c6ea 010/bin/bash 例如,docker rm 5d034c6ea010后跟容器ID。 在删除容器之前,必须停止容器的运行。 docker cp此命令用于在容器和宿主机之间复制数据。 例如,docker cp5d 034 c6ea 010:/etc/nginx/nginx.conf/docker data/nginx/conf/nginx.conf将容器的目录文件存储在宿主机上的指定位置命令实战

如果需要nginx容器,并且需要直接在主机上更改nginx配置文件和默认主页,则可以在主机上实时查看容器nginx的日志。 我们可以按以下方式一步一步地完成。

使用--rm参数启动容器,删除docker run-d-p 8081:80-- name nginx-- rmnginx以便于进入容器。 容器中的配置文件、项目文件和日志文件的目录地址docker exec-it 9123 b67 e 428 e/bin/bash导出容器的配置文件dockercpnginx:/etc/ngging 显示nginx的nginx.conf导出配置文件nginx.confdockercpnginx:/etc/nginx/conf.d/docker data/nginx/conf/conf.d导出配置目录conf.d容器dockersserver容器将自动删除,以下命令将启动容器,并启动目录挂载docker run-d-p 8081:80-- name nginging - v/docker data/nginx/conf/nginx.conf:/etc/nginx/nginx完成- v/docker data/nginx/conf/conf.d:/etc/nginx - v/docker data/nginx/www:/usr/share/ngine-v/docker data/nginx/logs:/var/log/nginx nginx访问服务地址30 访问宿主机上的日志目录/dockerData/nginx/logs查看日志2019/11/2310:08:11 [ error ]6#6: * 1目录索引of '/usr/logs server: localhost,request: 'GET/HTTP/1.1 ', host: '192.168.136.129:8081 '的/usr/share/nginx/html/挂载在服务器上的/dockerData/nginx/www目录中使用项目文件CD/dockerdata/nginx/www#vim创建并编辑文件vi index.html #现在进入vim界面,按I键插入,然后单击Hello、Hello

可以使用Dockfile构建镜像,并直接在docker中执行。 文档文件是一个文本文件,其中包含构建镜像所需的所有命令。 首先,我们将讨论Dockerfile文件中的几个重要命令。

命令的详细解释

FROM选择基础镜像并对基础镜像进行更改。 例如,要生成SpringBoot项目的镜像,必须选择名为java的基础镜像。 FROM必须用作文档文件的第一个命令。 例如,如果FROM openjdk:8-jdk-alpine基本镜像可用,则使用alpine版本。运行命令用于运行命令行命令。 有以下两种形式。 是外壳形式。 RUN命令与直接在命令行中输入的命令相同。 RUN echo 'Hello,Docker!'/usr/share/nginx/html/index.html exec格式: RUN [ '可执行文件','参数1 ','参数2']这与函数调用的格式类似。 CMD此命令用于指定缺省容器主进程的启动命令。 CMD指令格式与RUN类似,也是两种格式

* shell格式: CMD命令* exec格式: CMD [ '可执行文件','参数1 ','参数2'.]*参数列表格式: CMD [ '参数1 ','参数2'.]。 指定ENTRYPOINT命令后,在CMD中指定具体参数。 入口点入口点的格式与RUN指令格式一样,分为exec格式和shell格式。 ENTRYPOINT的目的和CMD一样,是指定容器启动器和参数。 ENTRYPOINT也可以在运行时替代,但比CMD稍复杂,必须在docker run的参数ENTRYPOINT中指定。 如果指定了ENTRYPOINT,则CMD的含义将发生变化,并将CMD的内容作为参数传递给ENTRYPOINT命令,而不是直接执行命令。 这意味着,实际执行时,两个命令“复制添加”是一个复制文件,它将从上下文目录中构建源路径的文件/目录复制到新层次镜像中的目标路径,例如,复制ADD命令比COPY高级,可以指定URL地址。 然后,Docker引擎会去下载该URL的文件。 如果ADD后面有tar文件,Dokcer引擎还会去解压缩。 构建镜像时,请尽可能使用副本。 复制的意思很明确,只是复制文件,但ADD包含更复杂的功能,其行为也不一定明确。 EXPOSE声明容器的运行时端口。 这仅仅是一个声明,并不意味着在运行时应用此声明会打开此端口的服务。 将这样的声明写入docker文件有两个优点。 一个用途是允许镜像用户了解此镜像服务的守护程序端口,以便可以轻松配置映射。另一个用途是在运行时使用随机端口映射,即使用docker run -P时自动要在运行时区分EXPOSE和-p主机端口:容器端口,请: -p是映射主机端口和容器端口。 换句话说,就是向外部访问公开容器的相应端口服务。 EXPOSE只会声明容器将使用哪个端口,而不会自动在主机上映射端口。 ENV指令很简单,可以设置环境变量,并直接使用本文定义的环境变量,即使是后面的其它指令,例如RUN或运行时APP。 有以下两种形式。 ENV ENV==.VOLUME此命令使容器中的一个目录具有永久存储功能。 该目录可以由容器本身使用,也可以与其他容器共享。 如果容器中的APP应用程序有持久性数据需求,可以在Dockerfile中使用此命令。 /tmp目录(如VOLUME /tmp )在运行时自动装载为匿名卷,写入/tmp的信息不会记录在容器存储层中,从而确保容器存储层的无状态化。 当然,这个装载设置可以在运行时覆盖。 例如,将labels添加到docker run-d-vmydata:/tmpxxxxlabel镜像中,由于组织镜像、记录版本说明或其他原因,与每个label对应,可以使用以label开头的行和如下所示,标签版本=' 1.0 '标签描述=' test ' docker file实战

以一个简单的SpringBoot项目为例,构建基于spring boot APP的镜像。 虽然功能很简单,但它向外部提供了一个say接口,在进入该方法时打印一行日志并写入日志文件。

@ springbootapplication @ rest controller @ log4j2publicclassdockerapplication { publicstaticvoidmain { string [ ] args } return 'Hello,Java日知录'; 使用maven打包到一个jar文件中,将其放在另一个文件夹中,然后按照以下步骤生成并运行镜像

在当前文件夹中创建Dockerfile文件,文件内容如下: FROM openjdk:8-jdk-alpine #持久化容器中的/tmp目录目录VOLUME /tmp #暴露端口EXPOSE 8080 #复制文件copy docker-demo.jar app 容器启动后执行的命令ENTRYPOINT ['java ','-DJ ava.security.EGD=file:/dev/./urandom ','-jar ', '/app.jar']并使用以下命令构建镜像通过运行镜像文件构建的镜像dockerrun-v/app/docker/logs:/logs-p 8080:8080---RM---namespringbootspringboot:v 1.0通过浏览器访问3358192.168 say在主机上实时日志tail-1000 查看docker-demo-info.log粉丝福利:为了让学习变得简单高效,今天我们免费分享由架构师传授的一组教学资源。 在成为架构师的道路上帮助大家披荆斩棘。

视频课程面向架构,包括“Spring、MyBatis、Netty源代码分析、高并发性、高性能、分布式、微服务体系结构原理、JVM性能优化、分布式体系结构”

它还打包了框架所需的各种程序,可以根据基础视频轻松构建分布式框架环境,并像企业生产一样进行学习和实践。

获得资料:戳这里就可以免费领取---正在跳

和平精英体验服官网「V3.02」IOS版

和平精英体验服官网「V3.02」IOS版

  • 分类:资讯阅读
  • 大小:17MB
  • 语言:简体中文
  • 版本:V3.02