辽源网站优化,如何建购物网站,衡阳企业seo优化首选,wordpress 教育培训参考教程#xff1a; https://www.bilibili.com/video/BV1Qa4y1t7YH/?p5spm_id_frompageDrivervd_source4964ba5015a16eb57d0ac13401b0fe77 什么是Docker#xff1f;
Docker是一种开源的容器化平台#xff0c;用于构建、打包、部署和运行应用程序。它通过使用容… 参考教程 https://www.bilibili.com/video/BV1Qa4y1t7YH/?p5spm_id_frompageDrivervd_source4964ba5015a16eb57d0ac13401b0fe77 什么是Docker
Docker是一种开源的容器化平台用于构建、打包、部署和运行应用程序。它通过使用容器来实现应用程序的隔离和轻量级虚拟化使应用程序能够在不同的环境中以一致的方式运行。
容器是一种轻量级的虚拟化技术它将应用程序及其所有依赖项如库、运行时环境等打包到一个独立的可执行单元中称为容器。每个容器都是相互隔离的可以在同一台主机上同时运行多个容器而它们之间不会相互干扰。这种隔离性使得容器可以在不同的操作系统、服务器或云平台上运行而无需担心环境差异或依赖冲突的问题。
Docker的优势
Docker 的优势主要体现在以下几个方面 快速部署和扩展Docker 可以快速创建、启动和停止容器使应用程序的部署变得非常高效。容器化应用程序可以在几秒钟内启动相比于传统的虚拟机启动时间更短。此外Docker 还支持自动化的扩展可以根据负载情况自动调整容器的数量提供更好的可伸缩性。 资源利用率高Docker 利用操作系统级别的虚拟化技术可以在同一台主机上运行多个容器且容器之间相互隔离。这种轻量级的虚拟化方式使得容器的资源占用更少相比于传统虚拟机可以更高效地利用服务器的资源。 环境一致性Docker 提供了一种标准化的容器化环境使应用程序可以在不同的环境中以一致的方式运行。开发人员可以在本地开发环境中构建和测试容器然后将其部署到生产环境中无需担心环境差异导致的问题。这种环境一致性有助于减少开发、测试和部署过程中的错误和不一致性。 简化依赖管理Docker 将应用程序及其依赖项打包到一个独立的容器中可以确保应用程序所需的所有依赖项都被正确安装和配置。这简化了应用程序的依赖管理避免了依赖冲突和版本不一致的问题。 持续集成和持续部署Docker 可以与持续集成和持续部署工具集成如 Jenkins、GitLab CI、Travis CI 等。通过使用容器化的构建和部署流程可以实现自动化的测试、构建和部署提高交付速度和质量。
总的来说Docker 提供了一种轻量级、快速、可移植和可扩展的应用程序交付和部署解决方案。它简化了应用程序的部署和管理过程提高了开发和运维的效率同时提供了更好的资源利用率和环境一致性。
Docker与虚拟机的区别 比较上面两张图我们发现虚拟机是携带操作系统本身很小的应用程序却因为携带了操作系统而变得非常大很笨量。Docker是不携带操作系统的所以Docker的应用就非常的轻巧。另外在调用宿主机的CPU、磁盘等等这些资源的时候拿内存举例虚拟机是利用Hypervisor去虚拟化内存整个调用过程是虚拟内存虚拟物理内存真正物理内存但是Docker是利用Docker Engine去调用宿主的的资源这时候过程是虚拟内存真正物理内存。
Docker的核心 镜像:一个镜像代表一个应用环境,他是一个只读的文件,如 mysql镜像,tomcat镜像,nginx镜像等容器:镜像每次运行之后就是产生一个容器,就是正在运行的镜像,特点就是可读可写仓库:用来存放镜像的位置,类似于maven仓库也是镜像下载和上传的位置dockerFile: docker生成镜像配置文件用来书写自定义镜像的一些配置tar:一个对镜像打包的文件,日后可以还原成镜像
什么是镜像
镜像是一种轻量级的可执行的独立软件包用来打包软件运行环境和基于运行环境开发的富案件它包含运行某个软件所需的所有内容包括代码、运行时所需的库、环境变量和配置文件。为什么镜像这么大 docker在管理所有镜像的时候是有一个层级结构的镜像的内部会依赖多个层级在拉取新的镜像时如果已经存在需要的层级依赖则不需要重新再拉一次所存在的层级依赖。 这个所谓的层级依赖叫UnionFS联合文件系统 Union文件系统是一种分层轻量级并且高性能的文件系统它支持对文件系统的修改作为一次提交来一层层的叠加同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。这种文件系统特性:就是一次同时加载多个文件系统但从外面看起来只能看到一个文件系统联合加载会把各层文件系统叠加起来这样最终的文件系统会包含所有底层的文件和目录。 docker镜像原理 docker的镜像实际是由一层一层的文件系统组成 boots(boot le system)主要包含bootoader和kemnelbootoader主要是引导加载kernelLinux刚启动时会加载ots文件系统。在doker请像的最底层就是boots。这一层与Linux/Unix 系统是一样的包含bt加载器bootloader)和内核kerne)。当bt加载完后整个内核就都在内存中了此时内存的使用权已由bootis转交给内核此时会卸载bootfs。roots(rootfile system)在boots之上包含的就是典型的iux系统中的/dev/prot/bin/et等标准的目录和文件。rootis就是各种不同的操作系统发行版比如Ubuntu/Centos等等。我们平时安装进虚拟机的entos都有1到几个GB为什么docker这里才20MB?对于一个精简的OSroots可以很小只需要包括最基本的命令工具和程序库就可以了因为底层直接使用Ho的Kemnal自己只需要提供rotfs就行了。由此可见不同的lnux发行版他们的botis是一致的rootis会有差别因此不同的发行版可以共用bootfs 为什么docker镜像采用分层结构 资源共享 比如:有多个镜像都是从相同的base镜像构津而来的那么宿主机只需在磁盘中保存一份base镜像。同时内存中也只需要加载一份base镜像。就可以为所有容器服务了。而且镜像的每一层都可以被共享。Docker镜像都是只读的当容器启动时一个新的可写层被加载到镜像的顶部。这一层通常被称为容器层容器层之下都叫镜像层。 安装Dockercentos 7.x环境
1、卸载已经安转的docker如果是新环境则不需要
sudo yum remove docker \docker-client \docker-client-latest docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine \2、安装yum源
sudo yum install -y yum-utilssudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo3、安装docker
sudo yum install docker-ce docker-ce-cli containerd.io4、安装完毕
启动docker sudo systemctl start docker查看启动状态 sudo systemctl status docker关闭docker sudo systemctl stop docker测试docker安装 sudo docker run hello-world
配置Docker阿里云镜像加速服务 1、配置镜像地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json -EOF
{registry-mirrors: [https://tz3lwh5e.mirror.aliyuncs.com]
}
EOF2、重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker3、查看是否配置成功 docker info
image 镜像命令
查看本机存在的镜像 docker images搜索镜像 docker search [镜像名] 如果发现运行这个命令报错了 Error response from daemon: Get https://index.docker.io/v1/search?qnginxn25: dial tcp: lookup index.docker.io on 192.168.43.1:53: read udp 192.168.188.131:60570-192.168.43.1:53: i/o timeout 说明是DNS的配置有问题可以通过以下的方式解决 1、修改 resolv.conf文件里的域名你本机的DNS或者是其他的DNS vi /etc/resolv.conf 内容 search localdomain nameserver 192.168.43.1 #你本机的DNS nameserver 8.8.8.8 #其他DNS 2、让resolv.conf只读不可修改否则重启网络之后修改的内容会被覆盖掉 chattr i /etc/resolv.conf 3、重启网络 systemctl restart network 拉取镜像 docker pull [镜像名]删除镜像 docker rmi [镜像名] -f 强制删除
容器命令 运行容器 docker run [镜像名] --name 别名为容器起一个名字 -d 启动守护式容器(在后台启动容器) -p 映射端口号:原始端口号指定端口号启动 例如 docker run -it --name myTomcat -p 8888:8080 tomcat docker run -d --name myTomcat -P tomcat 查看运行的容器 docker ps -a 正在运行的和历史运行过的容器 -q 静默模式只显示容器编号 停止|关闭|重启容器 docker start 容器名字或者容器id ---------- 开启容器 docker restart 容器名或者容器id ---------- 重启容器 docker stop 容器名或者容器id ---------- 正常停止容器运行 docker kill 容器名或者容器id ---------- 立即停止容器运行 删除容器 docker rm -f 容器id或容器名 docker rm -f $(docker ps -aq) ---------- 删除所有容器 查看容器内进程 docker top 容器id或容器名 ---------- 查看容器内的进程 查看容器内部细节 docker inspect 容器id ---------- 查看容器内部细节 查看容器的运行日志 docker logs [OPTIONS] 容器id或容器名 ---------- 查看容器日志 -t 加入时间戳 -f 跟随最新的日志打印 --tail 数字 显示最后多少条
容器内数据交互
centos — docker(引擎) — nginx(容器内部) 进入容器内部 docker exec [options] 容器id 容器内命令 ---------- 进入容器执行命令 -i 以交互模式运行容器通常与 -t 一起使用 -t 分配一个伪终端 容器内安装软件 apt-get update apt-get install 安装包名称 退出容器 exit 将容器打包为新的镜像 docket commit -a作者 -m描述信息 容器id 目标镜像名称:TAG 从容器中复制文件到宿主机目录中 docker cp 容器id:容器内资源路径 宿主机目录路径 设置容器和宿主机共享目录 docker run -it -v /宿主机的路径:/容器内的路径:ro(只读) 镜像名 ------------ 宿主机的目录不存在就会创建 注意宿主机路径必须是绝对路径宿主机目录会覆盖容器内目录内容 运行docker inspect 容器id 命令 检查json串里有没有以下内容如果有则证明卷挂载成功
Mounts: [{Type: bind,Source: /root/home,Destination: /uer/share/nginx/html,Mode: ,RW: true,Propagation: rprivate}], 打包镜像 docker save 镜像名 -o 名称.tar 载入镜像 docker load -i 名称.tar