Docker

1、项目部署的问题

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:

  1. 依赖关系复杂,容易出现兼容性问题
  2. 开发、测试、生产环境有差异

2、Docker如何解决依赖的兼容问题的?

  1. 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
  2. 将每个应用放到一个隔离容器去运行,避免互相干扰

 3、Docker如何解决不同系统环境的问题?

  1. Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
  2. Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行

4、Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像

Docker应用运行在容器中,使用沙箱机制,相互隔离

总结:

Docker是一个快速交付应用、运行应用的技术:
    可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
    运行时利用沙箱机制形成隔离容器,各个应用互不干扰
    启动、移除都可以通过一行命令完成,方便快捷

5、镜像和容器

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

6、安装Docker

https://www.aliyundrive.com/s/4J5QcWtV9Bi

总结:

什么是Docker:
    帮助我们快速构建应用镜像、交付应用、运行应用的技术
什么是镜像:
    将应用程序及其依赖、环境、配置打包在一起就是镜像
什么是容器:
    镜像运行起来就是容器,一个镜像可以运行多个容器
Docker工作流:
    构建自定义镜像或者从DockerRegistry拉取镜像
根据镜像创建容器,并运行

7、镜像操作命令

 总结:

镜像操作有哪些?

  1. docker images
  2. docker rmi
  3. docker pull
  4. docker push
  5. docker save
  6. docker load

8、容器相关命令

 总结:

docker run命令的常见参数有哪些?
    --name:指定容器名称
    -p:指定端口映射
    -d:让容器后台运行
查看容器日志的命令:
    docker logs
    添加 -f 参数可以持续查看日志
查看容器状态:
    docker ps
查看容器状态:
    docker ps 
    添加-a参数查看所有状态的容器
删除容器:
    docker rm
    不能删除运行中的容器,除非添加 -f 参数
进入容器:
    命令是docker exec -it [容器名] [要执行的命令]
    exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的

9、数据卷

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

数据卷操作的基本语法如下:

  docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  create 创建一个volume

  inspect 显示一个或多个volume的信息

  ls 列出所有的volume

  prune 删除未使用的volume

  rm 删除一个或多个指定的volume

总结:

数据卷的作用:
    将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作:
    docker volume create
    docker volume ls
    docker volume inspect
    docker volume rm
    docker volume prune

10、挂载数据卷

在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录

 总结:

数据卷挂载方式:
    -v volumeName: /targetContainerPath
    如果容器运行时volume不存在,会自动被创建出来

11、数据卷挂载的方式对比

 总结:

docker run的命令中通过 -v 参数挂载文件或目录到容器中:
    -v volume名称:容器内目录
    -v 宿主机文件:容器内文件
    -v 宿主机目录:容器内目录
数据卷挂载与目录直接挂载:
    数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
    目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看

12、Dockerfile自定义镜像

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。

具体参考:https://www.aliyundrive.com/s/A39Z84EZuzt

13、DockerCompose

具体参考:https://www.aliyundrive.com/s/A39Z84EZuzt

14、Docker镜像仓库

具体参考:https://www.aliyundrive.com/s/A39Z84EZuzt

原文地址:https://www.cnblogs.com/sun-10387834/p/15692850.html