尚硅谷 2022 版 Docker 实战教程官方课程资料:https://pan.baidu.com/s/1AyYbnDRoD-m2xBPvfvjh7Q?pwd=8gfh
提取码:8gfh

一.Docker 简介与安装

Docker 两个主要部件:

Docker 为什么出现?

解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

1. Docker 基本组成

Docker 镜像

Docker 镜像是 Docker 容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。相当于容器的“源代码”,docker 镜像文件类似于 Java 的类模板,而 docker 容器实例类似于 java 中 new 出来的实例对象。

Docker 仓库

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker 容器

Docker 容器和文件夹很类似,一个 Docker 容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。

2. Docker 的安装

参考官方网站:Install Docker Engine on CentOS | Docker Documentation

以下操作均需要管理员权限,如果不是 root 角色下,需要在每条命令前加 sudo

  1. 卸载旧版本
1
2
3
4
5
6
7
8
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

image-20220809205826182

  1. 安装需要的软件包
1
yum install -y yum-utils
  1. 设置 stable 镜像仓库

这里不能按照官网的操作,因为我们要设置自己的阿里云镜像仓库!!

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

image-20220809211055365

  1. 更新 yum 软件包索引
1
yum makecache fast

image-20220809211114613

  1. 安装 DOCKER CE
1
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动 Docker、查看 docker 版本
1
2
systemctl start docker
docker -v

image-20220809211514002

  1. HelloWorld
1
docker run hello-world

image-20220809211641013

3. 配置阿里云镜像加速

  1. 注册一个阿里云账号,进入控制台,选择容器镜像服务

image-20220809211915067

  1. 直接复制粘贴官方的代码

image-20220809212040354

image-20220809212114262

4.底层原理

为什么 docker 比 VM 虚拟机 快?

  1. docker 有着比虚拟机更少的抽象层
    • 由于 docker 不需要 Hypervisor(虚拟机)实现硬件资源虚拟化,运行在 docker 容器上的程序直接使用的都是实际物理机的硬件资源。因此在 CPU、内存利用率上 docker 将会在效率上有明显优势。
  2. docker 利用的是宿主机的内核,而不需要加载操作系统 OS 内核
    • 当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载 OS,返回新建过程是分钟级别的。而docker 由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个 docker 容器只需要几秒钟。

image-20220809212613336

二. Docker 常用命令

1. 帮助启动类命令

命令 描述
systemctl start docker 启动 docker
systemctl stop docker 停止 docker
systemctl restart docker 重启 docker
systemctl status docker 查看 docker 状态
systemctl enable docker 开机启动
docker info 查看 docker 概要信息
docker –help 查看 docker 总体帮助文档
docker 具体命令 –help 查看 docker 命令帮助文档

2. 镜像命令

命令 描述 说明
docker images 列出本地主机上的镜像 -a :列出本地所有的镜像
-q :只显示镜像 ID。
docker search XXX 在仓库中搜索某个镜像 –limit : 只列出 N 个镜像,默认 25 个
docker pull XXX:[tag] 下载某个镜像 没有 TAG 就是最新版
docker system df 查看镜像/容器/数据卷所占的空间
docker rmi XXX 删除某个镜像 (名字/ID) -f 强制删除 , 可以一次删除多个
docker commit -m=”提交的描述信息” -a=”作者” 容器 ID 要创建的目标镜像名:[标签名] 提交容器副本使之成为一个新的镜像

3. 容器命令

有镜像才能创建容器,这是根本前提。

命令 描述 说明
docker run [OPTIONS] IMAGE [COMMAND] [ARG…] 新建+启动容器 –name=”xxx”:为容器指定一个名称;
-d: 后台运行容器并返回容器 ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射,大写 P
-p: 指定端口映射,小写 p
docker ps [OPTIONS] 列出当前所有正在运行的容器 -a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近 n 个创建的容器。
-q :静默模式,只显示容器编号。
exit;ctrl+p+q 退出容器 exit 退出,容器停止;ctrl+p+q 退出,容器不停止
docker start ID/name 启动已停止运行的容器
docker restart ID/name 重启容器
docker stop ID/name 停止容器
docker kill ID/name 强制停止容器
docker rm ID 删除已停止的容器
docker logs ID 查看容器日志
docker top ID 查看容器内运行的进程
docker inspect ID 查看容器内部细节
docker exec -it 容器 ID bashShell
docker attach 容器 ID
进入正在运行的容器并以命令行交互 attach 直接进入容器启动命令的终端,不会启动新的进程,用 exit 退出,会导致容器的停止。
exec 是在容器中打开新的终端,并且可以启动新的进程用 exit 退出,不会导致容器的停止。(推荐)
docker cp 容器 ID:容器内路径 目的主机路径 从容器内拷贝文件到主机上
docker export 容器 ID > 文件名.tar 导出容器
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号 导入容器

三. Docker 容器数据卷

是什么?

类似 Redis 的 rdb 和 aof 文件,类似 Linux 虚拟机和 win 宿主机共享文件夹。将 docker 容器内的数据保存进宿主机的磁盘中运行一个带有容器卷存储功能的容器实例

1.宿主和容器间映射添加容器卷

  1. 通过命令直接挂载
1
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录   镜像名
  1. 查看数据卷是否挂载成功
1
docker inspect 容器ID

image-20220809220356160

  1. 此时在宿主机或容器的对应挂载目录中修改数据都是同步的。

2.读写规则映射添加

  • 读写(默认):re

    • docker run -it –privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
  • 只读:ro

    • docker run -it –privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名

设置了只读之后,在容器中就无法写入内容了。

此时如果宿主机写入内容,可以同步给容器内,容器可以读取到

image-20220809220741978

3.卷的继承和共享

  1. 容器 1 完成和宿主机的映射

image-20220809220845322

  1. 容器 2 继承容器 1 的卷规则
1
docker run -it  --privileged=true --volumes-from 父类  --name u2 ubuntu

image-20220809220906942

四.Docker 常规安装简介

总体步骤:

  • 搜索镜像
    • docker seacher xxx
  • 拉取镜像
    • docker pull xxx
  • 查看镜像
    • docker images
  • 启动镜像
    • 服务端口映射
    • docker run -it -p xxxx:xxxx xxx
  • 停止容器
    • docker stop xxx
  • 移除容器
    • docker rm xxx(ID)

相关的应用安装参考: