Docker简介

  • Docker是一个开源的容器化技术。

  • 首先要明白一个概念,docker是干什么的?

    docker可以理解为一个沙箱,单独模拟了一个微电脑,而每个微电脑其实都是一个简易版的Linux操作系统。这便是容器化技术。

    这个被模拟的微电脑叫做容器,其中包含了软件、系统工具、以及系统库、运行环境、root用户权限、进程空间、用户空间、网络空间等等等。

  • 为什么要用docker?

    这个问题的本质是:为什么要使用容器化技术?

    在此之前,所有的软件都需要人工去调整,经常会受到操作系统和依赖库版本的影响,就会导致环境不统一,进而进发其他问题。

    现在有了容器化技术,人们只需要按照容器的标准去操作即可,无需关心里面中使用到了什么依赖。

  • docker官网文档

安装docker

linux环境

  • 需要的安装包,提供了yum的相关功能

    yum install -y yum-utils
    
  • 设置yum源

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    

    如果这里报错:Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 14] curl#35 - “TCP connection reset by peer”

    是因为电脑访问不到Doker的官方仓库URL,那么就不使用官方镜像,改为使用阿里云镜像即可

    	yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  • 更新yum软件包索引

    yum makecache fast
    
  • 安装docker最新的社区版

    # 最小安装
    yum install docker-ce
    # 完整安装(推荐)
    yum install -y docker-ce docker-ce-cli containerd.io
    
  • 启动并加入开机启动

    systemctl start docker
    systemctl enable docker
    
  • 检查docker是否成功启动,出现下图说明启动成功了
    在这里插入图片描述

  • 一些其他命令:

    重启docker服务:service docker restart
    启动服务:systemctl start docker
    查看docker版本:docker version
    查看docker当前状态:docker info
    帮助:docker 命令 --help

  • 卸载docker

    systemctl stop docker
    1)卸载依赖
    	yum remove docker-ce docker-ce-cli containerd.io
    2)删除资源
    	rm -rf /var/lib/docker        docker的默认工作路径
    
  • 如果安装过以前的旧版本的docker,卸载旧版本的docker:

    yum remove docker \
               docker-client \
               docker-client-latest \
               docker-common \
               docker-latest \
               docker-latest-logrotate \
               docker-logrotate \
               docker-engine
    
  • docker运行流程
    在这里插入图片描述

  • Docker工作结构:
    Docker是一个Client - Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问;
    DockerService接受到DockerClient的指令,就会执行这个命令。
    在这里插入图片描述

windows环境

  • 直接下载docker安装程序
  • 按程序一步步来安装即可
  • 选择默认的WSL 2虚拟技术即可
  • Windows 中运行的 Docker 并非真正的原生 Linux Docker,而是通过虚拟机技术。 和 macOS 中的Docker Desktop 原理一致。
  • Windows Docker Desktop 的核心是一个轻量级、高度优化的 Linux 虚拟机(VM),它“夹在”Windows 宿主机和你的容器之间。
  • 一共有两种实现的方式:
    • WSL 2(默认且推荐)
      • 原理:WSL 2 (Windows Subsystem for Linux 2) 本身就是一个完整的、轻量级 Linux 内核,运行在微软的 Hyper-V 管理程序之上。
        Docker Desktop 将 Docker 引擎(dockerd)直接安装在这个 WSL 2 的 Linux 发行版(通常是 docker-desktop 发行版)中。
      • 关键目录映射:宿主机的全部目录会自动挂载到 WSL 2 的 /mnt/host
      • 可以通过 \wsl$\ 路径直接访问 Linux 文件。
      • 进入wsl虚拟环境
        wsl -d docker-desktop
        
    • Hyper-V(传统模式)
      • 这是 Docker Desktop for Windows 早期使用的技术。
      • 原理:Docker 在 Windows 的 Hyper-V 管理程序上创建一个名为 “DockerDesktopVM” 的小型专用 Linux 虚拟机。所有容器都在这个独立的 VM 中运行。
      • 现已逐渐被 WSL 2 取代。
      • 除非你的 Windows 版本不支持 WSL 2(如某些旧版 Windows 10 家庭版),否则无需使用此模式。

镜像

  • docker的第一步,镜像

  • 什么叫镜像?

    镜像可以理解为一个只读的模板,其中描述了某个程序所需的所有依赖和配置。

    例如:现在有一个 mysql 8.0 的镜像,只需要根据这个镜像便可一键做一个沙箱出来,里面有着 mysql 8.0 的这个程序。

  • 这些镜像从哪里下载呢?默认会从docke官方的仓库DockerHub下载

镜像命令

  • 查看本机所有的镜像

    docker images 【可选项】
    -a:列出所有镜像
    -q:只显示镜像id
    在这里插入图片描述
    解释:
    REPOSITORY:镜像的名(仓库源)
    TAG :镜像的标签
    IMAGE ID:镜像的id
    CREATED:镜像的创建时间
    SIZE:镜像的大小

    镜像的本地存储位置:/var/lib/docker (容器等等也在这个位置存储)

  • 搜索镜像

    docker search 镜像名 【可选项】
    –filter=stars=3000 :只显示收藏数大于3000的镜像

    这个命令会去dockerHub仓库查询镜像;但一般会人工去dockerHub网站上浏览镜像

  • 下载镜像

    docker pull 镜像名【:tag】
    可指定版本号,默认最新版(latest)

    例如,下载一个mysql的最新镜像:
    在这里插入图片描述
    也可以指定版本号下载:
    在这里插入图片描述

  • 修改镜像名

    docker tag 镜像id 新名称

  • 删除镜像

    docker rmi -f 镜像id1 镜像id2 …
    docker rmi -f $(dicker images --aq) :删除全部镜像

  • 导出镜像文件

    # linux系统:
    docker save image-name:tag > image.tar
    docker save image-name:tag | gzip > image.tar.gz
    
    #或者
    docker save -o <保存路径>/<镜像名称>.tar <镜像名称>:<标签>
    docker save -o image.tar image-name:tag
    
  • 导入镜像文件

    docker load < hello-world.tar.gz
    #或者
    docker load -i image.tar
    

容器

  • 容器就是指某个具体的程序
  • 容器是某个镜像的实例
  • docker全流程图
    在这里插入图片描述

容器命令

  • 构建并运行容器
      docker  run  【可选项】  image
      --name="自定义容器名"  :指定容器名
      -d:后台方式运行
      -it:使用交互方式运行,进入容器查看内容
      -p:指定容器端口
      	例1:-p  8080   
      	例2:-p  8080:8080
      	-p  主机端口:容器端口
      	-p  ip:主机端口:容器端口
      	-p  容器端口
      -P:随机指定端口
      例,运行一个“centos镜像”的容器:
      	docker pull centos
      	docker  run  -it  centos  /bin/bash
      	exit  :退出并关闭容器
      	ctrl  +  P  +  Q : 退出但不关闭容器
      其他可选参数:
      	-v 数据卷的挂载,可以将物理机的某些文件/文件夹与容器内共享
      	-v 物理机路径:容器内路径    -v ./data:/var/data
    
  • 查看正在运行的容器   
      docker  ps  【可选项】
      -a:当前运行+曾经运行过的容器
      -n=1:最近倒数运行的容器(显示最后几个)
      -q:只显示容器编号
    
  •  删除容器
      docker  rm  容器id		不能删除正在运行的容器		可加 -f 强制删除
      docker  rm  -f  $(docker  ps  -aq)  :强制删除所有容器
    
  • 启动停止容器等操作:
      docker  start  容器id:启动容器
      docker  restart  容器id:重启容器
      docker  stop  容器id:停止当前正在运行的容器
      docker  kill  容器id:强制停止容器
    
  • 显示日志:docker logs  【可选项】  容器id
      -tf:显示时间戳等信息
      --tail  number:显示最近多少条日志
    
  • 查看容器中的进程信息
      docker  top  容器id
    
  • 查看详细信息/元数据
      docker  inspect  容器id
    
  • 进入当前正在运行的容器
      docker  exec  -it  容器id  /bin/bash :进入容器后开启一个新的终端,可以在里面操作(退出容器 ctrl+D)
      docker  attach  容器id :进入容器正在执行的终端,不会启动新的进程
    
  • 从容器内拷贝文件到主机上 :
      docker  cp  容器id:容器内路径  目的主机路径
    反向:从主机拷贝文件到容器内:
      docker  cp  主机路径  目的容器id:容器内路径
    
  • docker查看系统内存等:docker  stats
    
  • 修改容器名:docker rename 容器id 新名
    

参考资料

更多推荐