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 打印版本信息并退出。
相关推荐
用户0328472220707 小时前
如何搭建本地yum源(上)
运维
武子康8 小时前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造