网站平台管理,网站建设如何报价,开个跨境电商要多少钱,开个捕鱼网站怎么做一、什么是docker#xff1f; Docker是一个用于开发#xff0c;交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开#xff0c;从而可以快速交付软件。借助Docker#xff0c;您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付…一、什么是docker Docker是一个用于开发交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开从而可以快速交付软件。借助Docker您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付测试和部署代码的方法您可以显着减少编写代码和在生产环境中运行代码之间的延迟。 通俗一点讲 Docker其实就是可以打包程序和运行环境虚拟机只能在linux下运行
把环境和程序一起发布的容器。当你需要发布程序时你可以使用Docker将运行环境一起发布。 二、docker优势劣势
虚拟机和DocKer对比 1.DocKer 启动速度是虚机万万不敢调戏的了这里声明一下在同一台电脑。
2.在资源的利用上也比虚机高多了同一台机器上我相信能跑100台DocKer咱们肯定不赶跑这么多台虚拟机有效的节约资源。
3.传统虚拟机 虚拟出一条硬件运行一个完整的操作系统然后在这个系统上安装和运行软件 4.容器内的应用直接运行在宿主机的内部容器是没有自己的内核的也没有虚拟硬件所以轻便 5.每个容器间是相互隔离的每个容器内都有一个属于自己的文件系统互不影响。 应用更快速的交互和部署 传统一堆帮助文档安装程序 Docker 打包镜像发布测试一键运行 更便捷的升级和扩缩容 更简的系统运维 更高效的计算资源利用
三、docker的历史 2008年Solomon Hykes与朋友共同创建了名为DotCloud的公司是一个PaaS平台即服务 Platform-as-a-Service提供商2013年Docker问世面向开源开源之后Docker迅速火爆后面公司改名为Docker。 Docker的第一个执行环境是LXC但从0.9版本开始被Libcontainer取代LXC叫做LinuX Container简称Linux的容器是世界上第一个容器应用Linux Container提供了在单一可控主机节点上支持多个相互隔离的Server Container同时执行的机制 Libcontainer为Docker封装了Linux提供的基础功能后面又被RunC代替runc 是一个 Linux 命令行工具用于根据 OCI[开放容器联盟]容器运行时规范创建和运行容器。 四、docker架构 Docker使用客户端-服务器架构。Docker客户端与Docker守护进程进行对话该守护进程完成了构建运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以 在同一系统上运行或者您可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。另一个Docker客户端是Docker Compose它使您可以处理由一组容器组成的应用程序。 五、Docker守护程序 Docker守护程序dockerd侦听Docker API请求并管理Docker对象例如图像容器网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
六、Docker客户端 Docker客户端docker是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run客户端会将这些命令发送到dockerd以执行这些命令。该docker命令使用Docker API。Docker客户端可以与多个守护程序通信。
七、docker执行过程 名词解释 ①镜像镜像是只读的文件提供了运行程序完整的软硬件资源是应用程序的集装箱 Docker镜像就好比是一个模板可以通过这个模板来创建容器服务tomcat镜像 run tomcat01容器 通过这个镜像可以创建多个容器最终服务运行或者项目运行就是在容器中的 ②容器是镜像的实例由 Docker 负责创建容器之间彼此隔离 Docker利用容器技术独立运行一个或者一组应用 通过镜像来创建的 启动停止删除基本命令 就目前可以把这个容器理解为一个简易的linux系统 ③仓库存放镜像的地方 Docker Hub默认是国外的远程仓库地址 https://hub.docker.com/ 阿里云,,,都有容器服务配置镜像加速 ④Docker file: 是一个配置文件 如何构建的步骤 来指定一个镜像是如何构建的通过Docker build指令可以将Dockerfile构建成一个镜像。 八、centos安装docker
1、首先需要大家虚拟机联网安装yum工具
yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken2、然后更新本地镜像源
# 设置docker镜像源
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i s/download.docker.com/mirrors.aliyun.com\/docker-ce/g /etc/yum.repos.d/docker-ce.repoyum makecache fast3、安装docker社区免费版
yum install -y docker-ce4、启动docker
Docker应用需要用到各种端口逐一去修改防火墙设置。非常麻烦因此建议大家直接关闭防火墙
启动docker前一定要关闭防火墙后
启动docker前一定要关闭防火墙后
启动docker前一定要关闭防火墙后
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld5、通过命令启动docker
systemctl start docker # 启动docker服务systemctl stop docker # 停止docker服务systemctl restart docker # 重启docker服务配置使用腾讯云 Docker 镜像源加速镜像下载可跳过
执行以下命令打开 /etc/docker/daemon.json 配置文件
vim /etc/docker/daemon.json 按 i 切换至编辑模式添加以下内容并保存。
{ registry-mirrors: [ https://mirror.ccs.tencentyun.com ] } 重启Docker systemctl restart docker 八、ubuntu安装docker # step 1: 安装必要的一些系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # step 2: 安装GPG证书 curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # Step 3: 写入软件源信息 sudo add-apt-repository deb [archamd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable # Step 4: 更新并安装 Docker-CE sudo apt-get -y update sudo apt-get -y install docker-ce #查看是否安装成功 查看容器的运行情况 docker ps 九、CentOS安装DockerCompose
1.Linux下需要通过命令下载安装缓慢需要多等一会
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-uname -s-uname -m /usr/local/bin/docker-compose十、docker映射文件路径 在创建docker容器时想要与本地 路径进行映射共享文件使用docker run -v 指令例如我需要将本地的路径/root/code映射到容器内的/data/code路径数据卷使用如下命令冒号前为宿主机的路径冒号后为容器路径其中xxx为镜像完整的路径
docker run -it -v /root/code:/data/code xxx/bin/bash
十一、使用docker拉取镜像 nginx
1、如果不指定版本则默认拉取最新的镜像版本
docker pull nginx 十二、查看本地docker镜像
docker images 就能看到上面拉取的nginx的镜像了。
十三、运行容器
docker run --name nginx-test -p 8080:80 -d nginx
参数说明
--name nginx-test容器名称。 -p 8080:80 端口进行映射将本地 8080 端口映射到容器内部的 80 端口 -d nginx 设置容器在在后台一直运行。 列表参数说明 Repository 镜像名称 Tag 镜像标签 Image Id 镜像 的ID Created 镜像的创建日期 Size 镜像的大小注意镜像默认存放位置/var/lib/docker目录下
1、在宿主机访问虚拟机地址将8080端口即可访问nginx 十四、查看镜像信息
docker inspect 镜像id 十五、镜像命令 1.docker pull nginx:latest 拉取镜像 2.docker images 查看镜像 3.docker run -d -p 81:80 nginx 创建容器 4.docker ps 查看正在运行的容器 5.docker ps -a 查看所有的容器(包括没运行的容器) 6.docker exec -it 2d bash 登录容器 -i 让容器的标准输入保持打开 -t 让docker分配一个伪终端并保存到容器的标准输入 7.exit或者CtrlD 退出容器 8.docker rm -f 容器id 删除容器 9.docker commit 2d m1 将2d容器保存为m1镜像 10.docker rmi -f 镜像id 删除镜像 11.docker save m21.tar 将m1镜像保存到1.tar文件中(备份镜像) 12.docker load 1.tar 将1.tar文件中加载为镜像(加载镜像) 13.docker tag 添加镜像标签 eg: docker tag nginxlatest nginx:lnmp #给nginx打上标签lnmp原来的标签是latest 14.docker images -q 查询镜像的id 15.docker rmi docker images -q 批量删除所有镜像 16. docker build -t 镜像名称 . dockerfile构建镜像 17.docker container run 启动新容器 18.docker diff 查看容器文件系统改动详情。 19.docker ps -aq |wc -l 查找容器数量 20. docker info Docker实例的状态和配置 十六、容器命令
1.docker container run 启动新容器的命令。该命令的最简形式接收镜像和命令作为参数。镜像用于创建容器而命令则是希望容器运行的应用。
docker run -it -d -p 81:80 nginx #命令会在前台启动一个 Ubuntu 容器并运行 Bash Shell。
2.docker container ls
列出所有在运行UP状态的容器。如果使用 -a 标记还可以看到处于停止Exited状态的容器 3.docker container exec
用于在运行状态的容器中启动一个新进程。该命令在将 Docker 主机 Shell 连接到一个运行中容器终端时非常有用。
eg: docker exec -it 97 bash #登录容器
4.docker container stop grammerdocker stop container_ID
此命令会停止运行中的容器并将状态置为 Exited(0)。 提示该命令通过发送 SIGTERM 信号给容器内 PID 为 1 的进程达到目的。 如果进程没有在 10s 之内得到清理并停止运行那么会接着发送 SIGKILL 信号来强制停止该容器。
5. docker container start
grammer docker start container_ID
重启处于停止Exited状态的容器。可以在 docker container start 命令中指定容器的名称或者 ID。 6.docker container rm
删除停止运行的容器。可以通过容器名称或者 ID 来指定要删除的容器。推荐首先使用docker container stop 命令停止容器.然后使用 docker container rm 来完成删除(先停止再删除)
7. docker container inspect
显示容器的配置细节和运行时信息。
十七、DockerFile构建镜像
1.Docker的引擎
Docker EngineDocker引擎--发动机程序支持的核心组件是Docker的核心部分使用的是客户端---服务器C/S)架构模式。其主要组成部分 ①、docker daemonDocker的服务端组件他是Docker架构中运行在后台的一个守护进程可以接收并处理来自命令行接口及API接口的指令然后进行相应的后台操作。 ②、REST API表示应用程序API接口开发者通过该API接口可以与Docker的守护进程进行交互从而指示后台进行相关操作。 ③、docker CLI表示Docker命令行接口开发者可以在命令行中使用Docker相关指令与Docker守护进程进行交互从而管理诸如image(镜像)、container(容器)、network(网络)和data volumes(数据卷)等实体。 2.Docker的底层容器运行原理:
①、客户端发送 docker pull tomcat 命令
②、命令到达 Docker daemon守护程序守护进程首先检查本地是否有该 Tomcat 的镜像如果没有则从注册中心仓库拉取该镜像
③、镜像拉取到本地后客户端执行 docker run 命令守护程序就会创建容器启动应用。 Docker架构主要包括Client、Docker_HOST和Register三部分 1. Client客户端 docker CLI Client即Docker客户端也就是上一小节Docker Engine中介绍的docker CLI。开发者通过这个客户端使用Docker的相关指令与Docker守护进程进行交互从而进行Docker镜像的创建、拉取和运行等操作。 2. DOCKER_HOSTDocker主机 DOCKER_HOST即Docker内部引擎运行的主机主要指Docker daemonDocker守护进程。可以通过Docker守护进程与客户端还有Docker的镜像仓库Registry进行交互从而管理Images镜像和Containers容器等。 3.Registry注册中心 Registry即Docker注册中心实质就是Docker镜像仓库默认使用的是Docker官方远程注册中心Docker Hub也可以使用开发者搭建的本地仓库。Registry中包含了大量的镜像这些镜像可以是官网基础镜像也可以是其他开发者上传的镜像。 我们在实际使用 Docker 时除了会涉及图中的 3 个主要部分外还会涉及很多Docker ObjectsDocker对象例如Images镜像、Containers容器、Networks网络、Volumes 数据卷、Plugins插件等。其中常用的两个对象Image和Containers的说明如下。 ·Images镜像 Docker镜像就是一个只读的模板包含了一些创建Docker容器的操作指令。通常情况下一 个Docker镜像是基于另一个基础镜像创建的并且新创建的镜像会额外包含一些功能配置。 例如开发者可以依赖于一个 Ubuntu 的基础镜像创建一个新镜像并可以在新镜像中安装 Apache等软件或其他应用程序。 ·Containers容器 Docker 容器属于镜像的一个可运行实例镜像与容器的关系其实与 Java中的类与对象相似开发者可以通过API接口或者CLI命令行接口来创建、运行、停止、移动、删除一个容器也可以将一个容器连接到一个或多个网络中将数据存储与容器进行关联。 3、认识dockerfile
镜像概念 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包组成。
镜像是分层结构每一层称为一个Layer BaseImage 包含基本的系统函数库、环境变量、文件系统等 Entrypoint 入口是镜像中应用启动的命令 其他在BaseImage 基础上添加依赖、安装程序、完成整个应用的安装和配置 镜像就是在系统函数库、运行环境基础上添加应用程序文件、配置文件、依赖文件等组合然后编写好启动脚本打包在一起形成的文件。 Dockerfile概念 Dockerfile使用来构建Docker镜像的文本文件是由一条条构建镜像所需的指令和参数构成的脚本。 Dockerfile是自定义镜像的一套规则 Dockerfile由多条指令构成Dockerfile中的每一条指令都会对应于Docker镜像中的每一层 Dockerfile每行支持一条指令每条指令可携带多个参数一条指令可以用方式去写多条指令。 Dockerfile支持以“#”为开头的注释
FROM XXX/jdk:8MAINTAINER docker_userENV JAVA_HOME /usr/local/javaADD apache-tomcat-8.0.32.tar.gz /usr/local/RUN mv apache-tomcat-8.0.32 tomcat8EXPOSE 8080RUN chmod ux /usr/local/tomcat8/bin/*.shCMD /usr/local/tomcat8/bin/catalina.sh start
4.Dockerfile 的基本结构分为4部分 基础镜像信息维护者信息镜像操作指令容器启动时执行指令 5.Dockerfile 指令
FROM 格式为 FROM image 或 FROM image:tag
Dockerfile 文件的第一条指令必须为 FROM 指令。
并且如果在同一个 Dockerfile 中创建多个镜像时
可以使用多个 FROM 指令每个镜像一次
如果from没有该镜像则从镜像仓库中找
MAINTAINER 格式为 MAINTAINER name指定维护者信息
ENV 格式为 ENV key value指定一个环境变量会被后续 RUN 指令使用并在容器运行时保持
ADD 格式为 ADD src dest
复制指定的src到容器中的dest
EXPOSE 格式为 EXPOSE port [port...]
告诉 Docker 服务端容器暴露的端口号供互联系统使用在启动容
器时需要通过 -p 映射端口Docker 主机会自动分配一个端口转发到
指定的端口
RUN 格式为 RUN command
RUN 指令将在当前镜像基础上执行指定命令并提交为新的镜像当命令较长时可以使用 \ 来换行
CMD 指定启动容器时执行的命令每个 Dockerfile 只能有一条 CMD 命令。
如果指定了多条命令只有最后一条会被执行。
如果用户启动容器时候指定了运行的命令则会覆盖掉 CMD 指定的命令。
WORKDIR 作用切换到镜像中的指定路径设置工作目录
在 WORKDIR 中需要使用绝对路径如果镜像中对应的路径不存在会自动创建此目录
一般用 WORKDIR 来替代 切换目录进行操作的指令
RUN cd path do something
WORKDIR 指令为 Dockerfile 中跟随它的任何 RUN、CMD、ENTRYPOINT、COPY、ADD 指令设置工作目录
如果 WORKDIR 不存在即使它没有在任何后续 Dockerfile 指令中使用它也会被创建。
ENTRYPOINT
Entrypoint的作用是把整个container变成了一个可执行的文件这样不能够通过替换CMD的方法来改变创建container的方式。但是可以通过参数传递的方法影响到container内部。
ENTRYPOINT 有两种格式:
ENTRYPOINT [“executable”, “param1”, “param2”] (exec 格式首选) ENTRYPOINT command param1 param2 (shell 格式)exec 格式 docker run image 后面跟的命令行参数将会添加到 ENTRYPOINT 所有参数的最后且会覆盖掉所有 CMD 命令中的参数。这将允许运行时传递参数给 ENTRYPOINT 命令例如 docker run image -d 会将 -d 参数传给 ENTRYPOINT 命令 。ENTRYPOINT 命令可以通过 docker run --entrypoint 参数来覆盖 。
shell 格式 会忽略所有 CMD 命令的参数和 docker run 的命令行参数ENTRYPOINT 要运行的命令会作为 /bin/sh -c 的子命令运行而且 /bin/sh 不会传递信号也就是说 ENTRYPOINT 要运行的命令不是 PID 为 1 的进程且不会收到 Unix 信号所以你要执行的命令不会收到 docker stop 发出的 SIGTERM 信号。 CMD 和 ENTRYPOINT 命令都定义了容器运行时运行命令。下面有几条规则 Dockerfile 必须有一条 CMD 或 ENTRYPOINT 命令 如果容器作为可执行程序运行,需要指定 ENTRYPOINT 命令 CMD 命令应该用来定义 ENTRYPOINT 命令的默认参数 十八、通过dockerfile文件自定义java镜像
构建三步骤
1、编写Dockerfile文件
2、docker build命令构建镜像
3、docker run 依镜像运行容器实例
Dockerfile执行流程
docker 从基础镜像运行一个容器执行一条 指令并对容器做出修改执行类似docker commit的操作提交一个新的镜像层docker 再基于刚提交的镜像运行一个新容器执行dockerfile中的下一条指令直到所有的指令都执行完成
先下载对应的资料
链接: https://pan.baidu.com/s/12XXUSOamR1uphXa-pOZl_Q 提取码: h744 镜像制作成功启动镜像
docker run -d --name dd1 -p 8080:8080 docker-demo 启动成功
docker logs -f dd1 查查容器dd1的启动日志 http://192.168.32.16:8081/hello/count 十九、镜像删除 docker rmi image_id 这里的image_id可以根据docker images 查看
docker rm image_id 删除单个
docekr rmi image_id1/容器名1 image_id2/容器名2 docker rmi -f image_id 强制删除镜像 参考docker入门---最全笔记_docker学习笔记-CSDN博客