12 KiB
说明
- 学习来源
[toc]
📙一、 系统介绍
1 概括性介绍
1.1 Docker Run做了什么
- 查找本地镜像
- 查找网络镜像
1.2 Docker工作机制
作者:步尔斯特 链接:https://www.zhihu.com/question/485967221/answer/2556644950 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket从客户端访问,DockerServer(守护进程)接受到DockerClient(客户端)的指令,就会执行这个命令。
守护进程管理运行在主机上的容器 。
容器,是一个运行时环境,就是我们前面说到的集装箱。
1.3 Docker比VMware快的原因
作者:步尔斯特 链接:https://www.zhihu.com/question/485967221/answer/2556644950 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
docker有着比虚拟机更少的抽象层
。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。docker利用的是宿主机的内核,而不需要Guest OS
。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。- Docker底层共用物理机的实际资源,而虚拟机需要模拟物理机的操作系统资源,所以Docker加载得更快,而虚拟机更慢。
Docker是一个解决了运行环境和配置问题,并且方便做持续集成以及有助于整体发布的容器虚拟化技术。
- 镜像
- 容器
- 仓库
📦二、 安装
1 脚本安装
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ DRY_RUN=1 sh ./get-docker.sh # 了解脚本在安装过程中将执行哪些步骤
$ sudo sh test-docker.sh # 直接执行
2 package包
-
转到
https://download.docker.com/linux/debian/dists/
,选择您的 Debian 版本,然后浏览到 、选择 、 或 ,然后下载您要安装的 Docker 引擎版本的文件。pool/stable/``amd64``armhf``arm64``.deb
-
安装
$ sudo dpkg -i package.deb
- 运行
$ sudo docker run hello-world
3 软件源
参考:
3.1 卸载
3.1.1 普通卸载
卸载内容:docker
docker.io
docker-engine
$ sudo apt-get remove docker docker-engine docker.io containerd runc
将保留 的内容,包括映像、容器、卷和网络。
3.1.2 完全卸载
-
卸载泊坞引擎、CLI、容器化和泊坞窗撰写包:
$ sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin $ # purge不保留配置文件
-
主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有映像、容器和卷:
$ sudo rm -rf /var/lib/docker $ sudo rm -rf /var/lib/containerd
您必须手动删除任何已编辑的配置文件。
3.2 安装
3.2.1 设置源
-
基础源
$ # 编辑/etc/apt/sources.list
# 阿里云源
deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
-
设置Docker源
- 官方源
- 添加Docker官方的GPG key
- 设置stable源
# 添加Docker官方的GPG key
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置stable源
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 国内源
- 添加Docker官方的GPG key
- 设置stable源
# 添加Docker官方的GPG key
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL http://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置stable源
$ echo \
"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.ustc.edu.cn/docker-ce/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
安装
- 更新包索引安装最新的Docker
$ sudo apt-get update
- 查看可用版本
$ apt-cache madison docker-ce
docker-ce | 5:20.10.18~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.17~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.16~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.15~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.14~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.13~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.12~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.11~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.10~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.9~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.8~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.7~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.6~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
- 安装最新版
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 安装指定版本,版本号为
5:20.10.8~3-0~debian-bullseye
$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io docker-compose-plugin
-
运行测试
- 通过运行
hello-world
镜像来验证是否正确安装了 Docker 引擎。
$ sudo docker run hello-world
-
设置仓库(配置docker加速器)
$ sudo mkdir -p /etc/docker
$ sudo touch /etc/docker/daemon.json
# 编辑此文件,加入以下内容
{
"registry-mirrors" : [
"https://8xpk5wnt.mirror.aliyuncs.com" # 自己的阿里云镜像源,每个人不一样
# https://docker.mirrors.ustc.edu.cn # 中科大的源
]
}
# 重启
systemctl daemon-reload
systemctl restart docker
# 设置开机启动
systemctl enable docker
#查看是否运行
ps aux | grep docker
docker ps
docker images
docker version
3.3 以非root身份运行
3.3.1 查看用户组
$ sudo cat /etc/group |grep docker
# docker:x:998:表示存在
3.3.2 创建用户组
$ sudo groupadd docker
3.3.3 将用户添加到用户组
$ sudo usermod -aG docker $USER
$ newgrp docker # 激活组更改,无效的话尝试重连ssh,退出登录,重启计算机等
3.4 为Docker指定DNS服务器
Linux |的安装后步骤泊坞窗文档 (docker.com)
3.5 CentOS上安装
📒三、入门
1 基础组件
1.1 ⭐Docker引擎
1.2 ⭐Docker核心
1.3 ⭐Docker平台组成
1.4 ⭐Docker生命周期
1.5 ⭐Docker分层原理
🔯四、命令
镜像
查看本地镜像列表
docker images
搜索镜像
docker search imagesName
拉取镜像
docker pull imagesName/id
docker pull imagesName:Tag
保存镜像
docker save imagesName/id -o 镜像保存的位置和名称
导入镜像
docker load -i 镜像位置
删除镜像
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
容器
容器列表
docker ps # 正在运行的
docker ps -a # 所有的容器
创建和删除容器
# 创建容器
docker run -it -d --name 要取的别名 -p 宿主机端口:容器端口 -v 宿主机文件存储位置:容器内文件位置 镜像名:Tag /bin/bash
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
参数含义
- -it 表示 与容器进行交互式启动
- -d 表示可后台运行容器 (守护式运行)
- --name 给要运行的容器 起的名字
- /bin/bash 交互路径
- -p 将容器的端口映射到宿主机上,通过宿主机访问内部端口
- -v 将容器内的指定文件夹挂载到宿主机对应位置
启动和停止容器
# 启动
docker start 容器ID/名称
docker restart 容器ID/名称
# 停止
docker stop 容器名/id
退出和进入容器
exit
# Ctrl + D 直接退出并关闭容器
# CTRL + P + Q 退出到后台
docker attach 容器ID/名称 # 需要Ctrl + P + Q才可以退出至后台,Ctrl + D会直接退出,exit也会直接退出
docker exec -it 容器ID/名称 bash # Ctrl + D可以直接退出到后台
修改容器名
# 修改容器名称
docker rename 原容器名 要修改的容器名
暂停和恢复容器
# 暂停容器
docker pause 容器名
# 恢复容器
docker unpause 容器名
生成镜像
使用场景:
- 构建临时的测试镜像;
- 容器被入侵后,使用docker commit,基于被入侵的容器构建镜像,从而保留现场,方便以后追溯。
弊端:
- 使用docker commit构建的镜像包含了编译构建、安装软件,以及程序运行产生的大量无用文件,这会导致镜像体积很大,非常臃肿。
- 使用docker commit构建的镜像会丢失掉所有对该镜像的操作历史,无法还原镜像的构建过程,不利于镜像的维护。
docker commit 容器ID 镜像名称:TAG