Docker(一)

一、Docker概述

1.1、概述

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。 Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。LXC主要通过Kernel的namespace实现每个用户实例之间的项目隔离,通过cgroup实现对资源的配额和调度。

1.2、Docker容器与虚拟机的区别

docker有着比虚拟机更少的抽象层。 由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。所以docker效率比虚拟机效率高。达到了秒级启动的地步。

优点:比VM小、快,Docker容器的尺寸减小相比于整个虚拟机大大简化了分布到云和分发时间的开销。Docker启动一个容器实例时间仅仅需要几秒钟;Docker是一个开放的平台,构建、发布和运行分布式应用程序; 开发人员不需要关注具体是哪个Linux操作系统; Google、微软(azure)、亚马逊(AWS)、IBM等都支持docker; Docker支持Unix/Linux操作系统,也支持Windows和Mac。 一次封装,到处运行。

局限性:Docker用于应用程序时是最有用的,但并不包含数据。日志、数据库等通常放在Docker容器外。一个容器的镜像通常都很小,不用存储大量数据,存储可以通过外部挂载等方式使用,比如:NFS、ipsan、MFS、ceph等 ,或者docker -v 命令进行映射磁盘。 总之,docker只用于计算,存储交给别人。

适用场景:web应用的自动化打包和发布;自动化测试和持续集成、发布;在服务型环境中部署和调整数据库或其他的后台应用; 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

二、Docker架构

Docker 包括三个基本概念

①镜像(lmage):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

②容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

③仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

三、Docker安装

3.1、配置阿里源

cat <<EOF >> /etc/yum.repos.d/docker-ce.repo

docker-ce-stable

name=Docker CE Stable - $basearch

baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/x86_64/stable/

enabled=1

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

EOF

3.2、安装Docker

yum install -y docker-ce

3.3、启动Docker

cat <<EOF >>/etc/docker/daemon.json

{

"registry-mirrors": [

"https://0vmzj3q6.mirror.aliyuncs.com",

"https://docker.m.daocloud.io",

"https://mirror.baidubce.com",

"https://dockerproxy.com",

"https://mirror.iscas.ac.cn",

"https://huecker.io",

"https://dockerhub.timeweb.cloud",

"https://noohub.ru",

"https://vlgh0kqj.mirror.aliyuncs.com"

]

}

EOF

systemctl daemon-reload

systemctl enable --now docker

3.4、卸载Docker

yum remove docker-ce

rm -rf /var/lib/docker

四、Docker命令

4.1、Docker常用子命令

|---------|-----------------|
| 命令字 | 含义 |
| run | 从镜像创建并运行新的容器 |
| exec | 在运行的容器中执行命令 |
| ps | 列出容器 |
| build | 从Dockerfile构建镜像 |
| pull | 从注册库下载镜像 |
| push | 将镜像上传到注册库 |
| images | 列出镜像 |
| login | 登录到注册库 |
| logout | 从注册库登出 |
| search | 在Docker Hub搜索镜像 |
| version | 显示Docker版本信息 |
| info | 显示系统全局信息 |

4.2、Docker容器管理子命令

命令字 含义
attach 将本地标准输入、输出和错误流附加到正在运行的容器。
commit 从容器中的更改创建一个新的镜像。
cp 在容器和本地文件系统之间复制文件/文件夹。
create 基于镜像创建一个容器,但该容器不会启动,默认处于"created"状态
diff 查看容器文件系统或目录的更改。
events 获取来自服务器的实时事件。
export 导出容器的文件系统为tar归档。
history 显示镜像的历史记录。
import 从tar包导入内容以创建文件系统镜像。
inspect 返回Docker对象的低级别信息。
kill 杀死一个或多个运行的容器。
load 从tar归档加载镜像。
logs 获取容器的日志。
pause 暂停一个或多个容器的所有进程。
port 列出容器端口映射或特定的映射。
rename 重命名容器。
restart 重新启动一个或多个容器。
rm 删除一个或多个容器。
rmi 删除一个或多个镜像。
save 保存一个或多个镜像到tar归档(默认情况下作为流传输到标准输出)。 -o,指定输出目标路径
start 启动一个或多个已停止的容器。
stats 显示实时流容器资源使用统计信息。
stop 停止一个或多个运行的容器。
tag 为镜像创建一个标签,该标签引用另一个镜像。
top 显示正在运行的进程的容器。
unpause 在一个或多个容器中恢复所有进程。
update 更新一个或多个容器的配置。
wait 阻塞直到一个或多个容器停止,然后打印它们的退出代码。

4.3、Docker全局选项

命令字 含义
--config string 指定客户端配置文件的路径(默认是"/root/.docker")。
-c, --context string 指定用于连接到Docker daemon的上下文的名称。这个选项会覆盖DOCKER_HOST环境变量和通过"docker context use"设定的默认上下文。
-D, --debug 启用调试模式,提供更多的日志信息。
-H, --host list 指定要连接到Docker daemon的套接字。
-l, --log-level string 设置日志级别(如"debug", "info", "warn", "error", "fatal")。默认是"info"。
--tls 使用TLS,由 --tlsverify 选项隐含。
--tlscacert string 只信任由该CA签名的证书。
--tlscert string 指定TLS证书文件的路径。
--tlskey string 指定TLS密钥文件的路径。
--tlsverify 使用TLS并验证远程服务器。
-v, --version 打印版本信息并退出。
相关推荐
爱学习的小囧2 小时前
SXi LAG 链路聚合负载均衡配置全教程 | LACP 协议 + 交换机联动,新手也能落地
运维·服务器·php·负载均衡·esxi
尽兴-2 小时前
Dubbo 负载均衡原理与服务调用全解析
运维·负载均衡·dubbo·轮询算法·一致性哈希·平滑加权轮询·随机算法
花间相见2 小时前
【Linux进阶01】—— tmux原理与实战教程
linux·运维·服务器
jinanwuhuaguo2 小时前
Ollama 全方位深度剖析:大模型时代的“Docker化”革命、算力普惠基础设施与安全边界重构
运维·开发语言·人工智能·深度学习·安全·docker·重构
北京阿法龙科技有限公司2 小时前
工业级真AR智能眼镜如何助力电力运维实现更安全、高效的流程作业
运维·安全·ar
Bert.Cai2 小时前
Linux groupadd命令详解
linux·运维
奔跑吧树袋熊2 小时前
Claude Code 2.1.108 深度解析:AI开始“自己干活”,编程自动化进入新纪元
运维·人工智能·自动化
有谁看见我的剑了?2 小时前
新服务器上线优化调整
linux·运维·服务器
成为你的宁宁2 小时前
【apt update突然报错Temporary failure resolving ‘cn.archive.ubuntu.com‘】
linux·运维·ubuntu