Docker

简介

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

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

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

Docker如何解决开发、测试、生产环境有差异的问题?

  • Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行

Docker是一个快速交付应用、运行应用的技术,具备下列优势:

  • 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统

  • 运行时利用沙箱机制形成隔离容器,各个应用互不干扰

  • 启动、移除都可以通过一行命令完成,方便快捷

一个开源的应用容器引擎

   

docker和虚拟机的差异:

        docker是一个系统进程     体积小、启动速度快、性能好

        虚拟机是操作系统中的操作系统   体积大、速度慢  性能一般

 

镜像:理解为软件的安装包

容器:通过镜像进行创建,运行起来就是容器,一个容器可以看作是一个进程 。一个镜像可以创建多个容器

 

docker架构(C/S):

        client  --->  发送命令或者请求到Docker服务端  负责与主机中存在的守护进程通讯

        server --->  主机中存在一个守护进程   负责管理docker中的对象

常见的对象:镜像、容器、数据卷、网络

获取镜像:1.自己构建

                2.获取镜像仓库(Docker Registry)中的镜像

安装相关命令:

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

systemctl status docker  #查看docker状态

docker  info  #查看配置

docker -v  #查看版本

docker  -help  #查看命令

基本操作

  • 镜像

 

镜像名称:[repository]:[tag]     没有指定tag时,默认是latest,代表最新版本的镜像

镜像命令:通过docker   -help 命令查看 各种命令的使用  

        docker  images   查看镜像列表

        docker  save   生成tar包

        docker  pull   拉取镜像

        docker  rmi   删除指定镜像

        docker  load   将tar包还原成镜像

        docker  push   将本地镜像推送到远程仓库

  • 容器

 

容器相关命令:  docker   run   创建容器并运行

容器时隔离环境   需要指定端口映射 --- 宿主机和容器内进程端口的对应关系

docker  run  --name  容器的名称  -p  宿主机的端口:容器内进程的端口  -d(后台运行)镜像名称

    docker   exec   -it mn bash  进入到docker容器中

        mn: 容器名称

        -it:   给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

        bash:进入容器后执行的命令,bash是一个linux终端交互命令

 

   docker   logs     查看容器的运行日志       -f   持续查看日志

   docker   rm        删除指定容器     -f   可以删除运行中的容器

   docker   ps        查看运行状态容器信息    -a  查看所有状态的容器

  • 数据卷  ---就是一个虚拟目录,这个目录会对应宿主机上面的某个目录

将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

相关命令:docker  volume  create

        docker  volume  ls                  #列出所有的数据卷

        docker  volume  inspect       #查看数据卷详情信息

        docker  volume   prune         #删除没有使用到的数据卷

挂载数据卷:

-v  数据卷名称(自定义):容器目录

如果容器运行时数据卷不存在  会自动被创建出来

 

数据卷挂载与目录直接挂载:

数据卷挂载耦合度低  由docker来管理目录   但是目录不好找

目录挂载耦合度高     需要我们自己管理    目录容易查找

  • Dokerfile自定义镜像:

        dokerfile的本质是一个文件,通过指令描述镜像的构建过程,文件第一行必须是FROM,从一个基础镜像来构建,基础镜像可以是基本操作系统或是其他制作好的镜像。

      

        镜像结构 ---是一个分层结构 ,每一层称为一个Layer

        BaseImage层基础镜像:包含基本的系统函数库、环境变量、文件系统

        Entrypoint:入口,镜像中应用启动的命令

         分层是为了基本数据的复用:

  • Docker-Compose  ---基于compose文件  批量操作容器

微服务部署为docker容器   容器之间不是通过ip地址互联  而是通过容器名

命令:docker-compose up -d

  • Docker搭建私有镜像仓库

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。

使用DockerCompose部署带有图象界面的DockerRegistry。

我们的***采用的是http协议,默认不被Docker信任,所以需要做一个配置

推送、拉取镜像:

        推送镜像到私有镜像服务必须先tag 

        docker push

        docker pull

可视化工具(Portainer)

一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建、管理和维护Docker环境。

        

全部评论

相关推荐

Jcwemz:中软证书写单行,考了什么学了什么相关技术栈的内容就说自己会什么, 没实习就包装实习简历,将项目经历写成实习做的,项目时间拉长,项目成果具体化,测试的项目成果无非就是写了多少用例查出了多少bug,重要的不是实习了多久,而是你会多少东西,你能表达的就都是你的。 cet4,随便找个地方标上就好了,不用写单行。 粗略建议,我也不在行,觉得对的可以采纳
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务