docker笔记(一):安装、常用命令

一、docker概述

1.1docker为什么会出现

各种环境配置十分繁琐,每一个机器都需要配置环境,难免出现各种问题。

发布一个项目jar需要配置(MySQL、redis、jdk、…),项目不能都带上环境安装打包:

传统:开发jar,运维来做 现在:开发打包部署上线,一套流程做完

Docker针对以上问题,提出了解决方案

1.2docker可以做什么?

虚拟机技术:(通过 软件 模拟的具有完整 硬件 系统功能的、运行在一个完全 隔离 环境中的完整 计算机系统)

缺点:资源占用多、冗余步骤多、启动慢

容器化技术:(容器化技术不是模拟的一个完整的操作系统)

Docker和虚拟机技术的区别:

  • 传统的虚拟机,可以虚拟出一条硬件,运行一个完整的操作系统,在这个操作系统上安装和运行所需的软件

  • 容器内的应用可以直接运行在宿主 主机的内核中,容器没有自己的内核,也不用虚拟硬件 (轻便)

  • 每个容器是相互隔离的,每个容器内都有属于自己的文件系统,之间互不影响。

1.3docker的优点

  1. 应用于更快速的交付和部署

    • 传统:通过大量的帮助文档,安装程序

    • Docker:打包镜像发布测试,一键运行

  2. 更便捷的升级和扩缩容

    • 通过使用Docker,部署应用 如同搭积木一样!

  3. 更简单的系统运维

    • 使用容器化之后,开发和测试环境是高度一致的

  4. 更高效的计算资源利用

    • Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器,让服务器的性能可以压榨到极致

1.4docker官网

1.5docker三要素

镜像(image):模板(类),通过一个镜像可以创建多个容器(对象) 容器(container):独立运行一个或一组应用,通过镜像创建 仓库(repository):存放镜像的地方,分为公有仓库和私有仓库

1.6docker架构图

1.6.1 基本工作流程图

image.png

1.6.2 架构

Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。运行的基本流程为:

  1. 用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。

  2. Docker Daemon作为 Docker架构中的主体部分,首先提供 Docker Server的功能使其可以接受 Docker Client 的请求。

  3. Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。

  4. Job 的运行过程中,当需要容器镜像时,则从 Docker Registry中下载镜像,并通过镜像管理驱动 Graph driver将下载镜像以Graph的形式存储

  5. 当需要为 Docker创建网络环境时,通过网络管理驱动 Network driver 创建并配置 Docker 容器网络环境。

  6. 当需要限制 Docker容器运行资源或执行用户指令等操作时,则通过 Exec driver 来完成。

  7. Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。

img

二、 docker安装

  1. 查看环境,是否centos7及以上

  2. 卸载旧版本

    • yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

  3. 安装所需的软件包:yum install -y yum-utils

  4. 设置镜像仓库(阿里云)

    yum-config-manager \
        --add-repo \
        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  5. 安装docker相关的内容

    # 更新yum软件包索引
    yum makecache fast
    ​
    # 安装docker docker-ce 社区
    yum install docker-ce docker-ce-cli containerd.io
  6. 启动docker:systemctl start docker

  7. 使用docker version查看是否安装成功

  8. 启动hello-world镜像:docker run hello-world

  9. 卸载docker

    # 卸载依赖
    yum remove docker-ce docker-ce-cli containerd.io
    ​
    # 删除资源
    rm -rf /var/lib/docker
    ​
    # /var/lib/docker docker的默认工作路径
  10. 设置docker镜像加速器:参考

三、 docker常用命令

3.1 帮助命令

  • 启动docker:systemctl start docker

  • 停止docker:systemctl stop docker

  • 重启docker:systemctl restart docker

  • 查看docker状态:systemctl status docker

  • 开机启动:systemctl enable docker

  • 查看docker概要信息:docker info

  • 查看docker总体帮助文档:docker --help

  • 查看docker命令帮助文档:docker 具体命令 --help

3.2 镜像命令

  • docker images #查看所有本地的主机上的镜像

  • docker search xxx #搜索镜像

  • docker pull xxx #下载镜像

  • docker rmi xxx #删除镜像

    • 组合使用 ,删除全部:docker rmi -f $(docker images -qa)

  • docker system df #查看镜像、容器、数据卷所占用的空间

  • QA:

    • docker虚悬镜像是什么?

      • repository、tag都是<none>的镜像

3.3 容器命令

说明:有了镜像才可以创建容器,Linux,下载一个centos/ubuntu镜像进行测试

docker pull centos/ubuntu
  • 新建容器并启动

    docker run [可选参数] image
    #参数说明
    --name="Name" 容器名字,用来区分容器
    -d  后台方式运行
    -i  使用交互方式运行,通常与-t同时使用
    -t  为容器重新分配一个伪输入终端,通常与-i同时使用
    -p   指定容器的端口 -p 8080:8080
        -p 主机端口:容器端口
    ​
    -P  随机指定端口
    ​
    #测试,启动并进入容器
    [root@iZ8vbisqeqec8qgypcxvyqZ /]# docker run -it centos /bin/bash
    [root@dbb48fe6c0c6 /]# ls
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
  • 查询所有的运行的容器

    docker ps 命令 #列出当前正在运行的容器
    -a # 列出当前正在运行的容器+历史运行过的容器
    -l #显示最近创建的容器
    -n 2 #显示最近创建的2个容器
    -q #静默模式,只显示容器的编号

  • 退出容器

    exit #直接容器停止并退出
    Ctrl+P+Q #容器不停止退出

  • 启动和停止容器

    docker start 容器id/name  #启动容器
    docker restart 容器id/name    #重启容器
    docker stop 容器id/name   #停止当前正在运行的容器
    docker kill 容器id/name   #强制停止当前容器

  • 删除容器

    docker rm 容器id/name #删除指定的容器,不能删除正在运行的容器;-f选项强制删除
    docker rm -f $(docker ps -aq)   #删除所有的容器

  • 查看日志

    docker logs -f -t --tail 容器id

  • 查看容器中的进程信息

    #使用top命令
    docker top 容器id

  • 查看镜像元数据

    docker inspect 容器id

  • 进入当前正在运行的容器

    #方式一  是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止
    docker exec -it 容器id  /bin/bash
    ​
    #方式二  重新进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器停止
    docker attach 容器id 
    ​

  • 从容器内拷贝文件到主机上

    docker cp 容器id:容器内文件路径 容器外文件路径

  • 导出容器

  • docker export 容器id > 文件名.tar #导出容器的内容为tar包
    cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号 #从tar包中的内容创建一个新的文件系统再导入为镜像

相关推荐

  1. docker笔记docker命令

    2024-04-07 04:44:02       34 阅读
  2. Centos docker安装命令

    2024-04-07 04:44:02       17 阅读
  3. Linux学习笔记() —— 命令

    2024-04-07 04:44:02       24 阅读
  4. docker安装docker命令

    2024-04-07 04:44:02       7 阅读
  5. Docker 命令

    2024-04-07 04:44:02       46 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-07 04:44:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-07 04:44:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-07 04:44:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-07 04:44:02       18 阅读

热门阅读

  1. HART报文详解

    2024-04-07 04:44:02       16 阅读
  2. Redis的String详细介绍

    2024-04-07 04:44:02       20 阅读
  3. 【算法】排硬币

    2024-04-07 04:44:02       19 阅读
  4. 互联网面经

    2024-04-07 04:44:02       21 阅读
  5. 从石膏像到真人:素描的进步之路

    2024-04-07 04:44:02       25 阅读
  6. 【leetcode】零钱兑换

    2024-04-07 04:44:02       20 阅读
  7. vue3 实现 input 输入框聚焦

    2024-04-07 04:44:02       22 阅读
  8. 嵌入式中基于QT的开源串口调试工具

    2024-04-07 04:44:02       19 阅读
  9. 判断三点是否在一直线上

    2024-04-07 04:44:02       21 阅读