为什么要用docker

一款产品:

开发开发环境开发人员
上线:应用环境,应用配置运维人员

传统方法开发人员打包应用程序,剩下的交给运维

问题

  1. 环境不同,版本更新端口冲突等导致服务不可用,这对于运维来说,考验很大
  2. 环境配置费时费力

现在方法开发打包部署上线,一套流程做完

docker解决了上面的问题

打包项目带上环境(镜像) -> docker仓库 -> 下载发布镜像 -> 直接运行即可

docker核心思想:

隔离:打包装箱,每个容器时相互隔离

  • 优点:
  1. 使得容器之间不会相互影响
  2. 通过隔离机制,使得某个容器使用资源限制,这样可以节省设备资源,使得设备资源利用到极致

docker虚拟机的联系与区别

假设需要使用一台linux机器

docker为什么比VM快:

  1. docker有着比虚拟机更少的抽象
    在这里插入图片描述

  2. docker利用的是宿主机内核vm需要的是Guest OS。所以说,新建一个容器的时候,docker不需要虚拟机一样重新加载一个操作系统内核,避免启动引导程序

docker的好处:

  1. 应用快速交付部署
  2. 更便捷的升级和扩缩容
  3. 简单系统运维
  4. 更高效的计算资源利用

docker安装

  1. 回顾hello-world镜像拉取过程

    1. docker在本机寻找镜像,判断是否有镜像,如果有则使用并运行。否则执行一步
    2. 去docker hub上下载。如果没找到镜像,返回错误。如果找到了镜像,将镜像下载到本地
    3. 使用下载好的镜像,下次运行时就可以直接从本机找到该镜像了

docker工作原理

docker是一个clientserver结构系统,docker的守护进程运行在主机上,通过socket客户端访问
docker-server接收到docker-client指令,就会执行这个命令,可能是启动一个容器,这个容器就可以看成是一个小的linux系统,在这个容器内可以运行一些服务例如mysql(3306端口)
在这里插入图片描述

docker命令

在这里插入图片描述

docker搭建练习

docker可视化

docker镜像

镜像是一种轻量级、可执行的独立软件包用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量配置文件

docker容器数据卷

简单来说,卷技术就是目录挂载,将容器内的目录挂载主机上。举例:
在这里插入图片描述

方式1:使用命令来挂载
docker run -it -v 主机目录:容器目录 <容器id>
docker inspect <容器id> 查看挂载情况,双向绑定,不管修改主机还是容器,都会同步。即使容器被停止了,也会同步
在这里插入图片描述

方式2:使用DockerFile来挂载
DockerFile就是用来构建docker镜像的构建文件。其实就是一个命令脚本通过这个脚本可以生成一个镜像。镜像是一层一层的,因此脚本是一个一个的命令,每个命令都是一层。
mkdir ceshi
pwd

在这里插入图片描述

vim dockerfile1 创建一个dockerfile文件

在这里插入图片描述
FROM centos:指定基础镜像
VOLUME [“volume01”,“volume02”]:通过volume进行挂载
CMD echo “——end——”:输出end
CMD /bin/bash进入到/bin/bash

docker build -f dockerfile1 -t test/centos .当前目录build镜像
docker images

在这里插入图片描述

docker run -it --name mycentos test/centos /bin/bash
ls -l

在这里插入图片描述

exit
docker inspect mycentos 查看卷挂载主机路径

在这里插入图片描述

DockerFile

DockerFile就是用来构建docker镜像的构建文件。其实就是一个命令脚本,通过这个脚本可以生成一个镜像。镜像是一层一层的,因此脚本是一个一个的命令,每个命令都是一层。

构建步骤

  1. 编写一个 dockerfile 文件
  2. 构建一个镜像: docker build -f <docker文件名> -t 镜像名 .
  3. 运行镜像:docker run
  4. 发布镜像(dockerhub、阿里云镜像仓库):docker push

docker全流程

在这里插入图片描述

Docker网络原理

  • 理解docker0
    在这里插入图片描述
    docker0相当于网关

问题:docker是如何处理容器网络访问的?

问题:不同网段的容器如何互联

  • 容器连通

    在这里插入图片描述
    docker run -d -P --name tomcat01 tomcat
    docker run -d -P --name tomcat02 --net mynet tomcat
    docker network connect mynet tomcat01
    dcoker exec -it tomcat01 ping tomcat02,可以ping通,反过来也可以ping通
    docker network inspect tomcat01,观察网卡信息,发现tomcat01被写入
    在这里插入图片描述
    docker exec -it tomcat01 ip addr,查看tomcat01网卡信息,发现多了一个IP地址
    在这里插入图片描述

docker compose

docker swarm

原文地址:https://blog.csdn.net/Dajian1040556534/article/details/134405020

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_20714.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注