容器引擎-Docker
Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级、可移植的、自给自足的容器。Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。

docker核心概念:
镜像image:容器的模板,通过镜像可以创建容器。
容器container:轻量级的运行沙箱,里面包含着程序和程序运行所附带的运行环境(用户权限、进程空间、用户空间、网络等)。容器是从镜像创建的应用运行实例。
仓库Repositiry:存放镜像的地方,docker官方仓库docker hub
容器引擎:docker-ce 社区版 docker-ee 企业版
安装Docker
https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.57e31b11xdEX47
docker version --查看当前docker版本

镜像操作命令:
OpenVz官方镜像站:https://wiki.openvz.org/Download/template/precreated
创建:
docker pull 仓库注册地址/仓库名
-a --获取仓库中所有镜像
docker pull ubuntu:18.04 --获取镜像到本地(仓库名:标签)如果不添加标签,则获取最新版

自定义创建镜像:
docker commit -m "注释" -a "作者信息" 容器ID 新仓库名:标签 --基于容器创建一个新的镜像
示例:docker commit -m "add new file" -a "bert" 3dcd bert:1.0 --基于容器ID:3dcd创建一个新的镜像bert:1.0

docker import 模板(由官方提供模板)文件路径 name:tag --基于本地导入镜像(仅导入镜像中的文件系统)
基于dockerfile创建:写一个脚本dockerfile文件,利用一个指定的父镜像,对父镜像进行操作描述
存出镜像:docker save -o 保存后的文件路径.格式 镜像ID\name:tag
docker save 镜像ID\name:tag > bert.tar --可以通过重定向存出镜像
载入镜像:docker load -i 文件需要载入的文件路径
上传镜像:将已存在的镜像上传到镜像仓库
(1)先将镜像存出,然后发送到仓库
(2)docker push name:tag 使用push时注意镜像仓库名必须和实际仓库名一致
镜像查看:
docker image ls --查看当前获取完成的镜像-使用仓库名、标签、镜像ID确定一个镜像
-a --列出所有镜像
-f --过滤 实例: -f dangling=true --只显示没有被使用过的镜像
-q --仅输出ID信息,默认为否

docker image inspect ubuntu:18.04 --查看镜像详细信息
docker image inspect f9a80a55f492 (64个16进制,256比特) --查看镜像详细信息

docker history ubuntu:18.04 --查看镜像历史封装内容
docker history f9a80a55f492

docker tag ubuntu:latest myubuntu:1.1 --自定义仓库名和标签(不会再占用空间大小)

镜像管理:
docker search [option] --搜索含有关键字的仓库或镜像
docker search --filter=is-official=true nginx

docker rmi 镜像ID\name:id --删除镜像
docker image rm 镜像ID\name:id
--删除时如果镜像有对应运行容器,则镜像无法删除(可以使用-f强制执行)
--如果镜像存在多个链接镜像,则删除时无法同时删除多个镜像(可以使用-f强制执行)

docker image prune --清理镜像(批量的对镜像进行删除)
-a --删除所有无用的镜像
--filter --通过过滤相关条件
-f --强制清理,不进行提示
容器操作命令:
容器创建:
docker create 镜像ID\name:id --创建容器(创建出来的容器默认为关闭的)
-t --分配一个伪终端
-i --保持标准输入打开(没有的话,进入容器无法输入命令)
-d --是否在后台运行容器(保持守护进程)
docker create -it ubuntu:18.04 --创建容器

docker run 镜像ID\name:id --创建容器()
工作逻辑:
1、检查本地是否有镜像,没有则自动去公共仓库下载
2、利用镜像创建一个容器,并启动该容器
3、分配一个文件系统给容器,并在只读镜像层外挂载读写层
4、从宿主机配置的网桥接口中桥接一个虚拟接口到容器中
5、从网桥地址池配置一个IP地址给容器
6、执行用户指定的应用程序
7、执行完成后容器自动终止
容器查看:
docker ps -a --查看当前所有容器(包括关闭的)

容器管理:
(1)docker start 容器ID --启动容器

(2)docker restart 容器ID --重启容器
进入容器
(1)docker attach 容器ID --进入容器操作(建议在启动和创建容器时,加入-it。使用exit\ctrl+d退出容器进程)
attache多个窗口进入到同一个容器是,命令会同步显示
(2)dcoker exec -it 容器ID /bin/bash --可以启动新的终端,指定终端类型
删除终止容器
(1)docker rm 容器ID --删除处于终止或退出状态的容器
-f --强制删除
-l --删除容器的连接,但是保留容器
-v --删除容器挂载的数据卷
(2)docker stop 容器ID --终止容器
(3)docker pause 容器ID --暂停容器,unpause解除
(4)docker container pause --清除关闭的容器
(5)docker kill 容器ID --强制终止容器,直接发送sigkill信号
导入和导出容器
(1)导出容器:docker export -o 导出的文件路径 容器ID
docker export 容器ID > bert.tar --使用重定向的方式导出
(2)导入容器:docker import 123.tar name:tag

查看容器
(1)docker container inspect 容器ID --查看容器的详细信息

(2)docker top 容器ID --查看容器内的进程

(3)docker stats 容器ID --查看容器的统计信息

(4)docker ps --查看已运行的容器
-a --查看所有容器
容器和主机之间复制文件
docker cp 主机本地文件路径 容器ID:容器内路径
示例:docker cp /bert.txt 523:/ --拷贝当前主机的bert.txt文件到容器ID为523的/目录下
示例:docker cp 523:/bert.txt /tmp --拷贝容器ID为523的/bert.txt文件到当前主机/tmp目录下
查看容器内文件系统的变更
docker diff 容器ID

查看容器端口映射
docker container port 容器ID
更新配置命令
docker container update 容器ID --更新容器运行时的配置或者设置资源限制配额
仓库命令
1、公共仓库
docker hub 公共镜像仓库 https://hub.docker.com
docker pull 仓库地址/维护用户名/仓库名
2、第三方仓库
3、本地仓库
docker run -d -p 5000:5000 registry:2
-p --指定端口映射
-d --后台进程保护
docker run -itd -v /docker/registry/:/docker/registry -p 5000:5000 --restart=always --name bert registry:latest
参数说明
1)-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
2)-v:把宿主机的/docker/registry目录绑定到容器/docker/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
3)-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
4)--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
5)--name bert:创建容器命名为bert,可自定义任何名称;
6)registry:latest:这个是pull下来的镜像;
curl http://9.134.130.35:5000/v2/_catalog --查看仓库镜像文件,用浏览器访问也是同样的结果

客户端更改配置文件
vim /etc/docker/daemon.json --修改下载的镜像源,添加私有镜像服务器的地址

修改后需要重启docker才能生效
docker数据管理
docker的数据卷是一个可以供容器使用的特殊目录或文件,它将主机操作系统目录直接映射进容器,类似于linux的mount挂载文件系统的行为。
1、数据卷可以在主机和容器之间共享和重用
2、数据卷内的数据修改后会立即生效,无论是容器内的操作还是本机操作
3、数据卷的更新不会影响容器
4、卷可以一直存在,直到没有容器使用
数据卷的管理命令
docker volume 默认保存在本地的/var/lib/docker/volumes下
docker volume rm 卷名 --删除卷
docker volume ls --列出卷列表
docker volume create -d local test --创建本地名为test的卷

docker volume inspect test --查看卷的详细信息

docker volume prune -a --清除所有无用的卷

容器引擎-Docker的更多相关文章
- 你不得不了解的应用容器引擎---Docker
最近突然想搭一个redis集群玩玩,因为公司的电脑同时开2个虚拟机就卡的不行,所以我就想到用Docker开启多个redis-server来搭建.然后在网上找着找着发现,使用Docker,哪需要搭建啊, ...
- 【开发工具 docker】值得学习的应用容器引擎docker安装
概述: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何 ...
- 应用容器引擎-Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化.容器是完全使用沙箱 ...
- Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布
微服务系统架构实践 开发语言Java 8 框架使用Spring boot 服务治理框架Dubbo 容器部署Docker 持续集成Gitlab CI 持续部署Piplin 注册中心Zookeeper 服 ...
- Kubernetes将弃用Docker!与 containerd容器引擎
时间戳:2022-06-07 20:32:19 星期二 撰写文档参考:(阿良-腾讯课堂)Kubernetes将弃用Docker 参考博客k8s入坑之路(3)containerd容器 container ...
- 史上最全面的Docker容器引擎使用教程
目录 1.Docker安装 1.1 检查 1.2 安装 1.3 镜像加速 1.4 卸载Docker 2.实战Nginx 3.Docker命令小结 4.DockerFile创建镜像 4.1 Docker ...
- Centos7下安装与卸载docker应用容器引擎
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...
- Docker 1.3.3/1.4.0 发布下载,Linux 容器引擎
Docker 1.3.3 发布,下载地址: https://github.com/docker/docker/archive/v1.3.3.zip 改进记录包括: Security Fix path ...
- 操作系统-容器-引擎容器-百科:Docker
ylbtech-操作系统-容器-引擎容器-百科:Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上 ...
- 【转帖】技术选型之Docker容器引擎
技术选型之Docker容器引擎 https://segmentfault.com/a/1190000019462392 图过不来的 原作者写的挺好的 题外话 最近对Docker和Kubernetes进 ...
随机推荐
- 主打一个“小巧灵动”:Vite + Svelte
作者:来自 vivo 互联网大前端团队- Wei Xing 在研发小型项目时,传统的 Vue.React 显得太"笨重".本文主要针对开发小型项目的场景,谈谈 Vite+Svel ...
- [转]vcpkg+opencv4(sfm+vtk)+openMVS+SFM算法-github代下载(http://gitd.cc/)
1.vcpkg+opencv4(sfm+vtk)+openMVS+SFM算法-github代下载(http://gitd.cc/) 2.OpenMVS详细安装教程(ubuntu18.04) 3.ubu ...
- Redis 源码简洁剖析 08 - epoll
select, poll, epoll 源码分析 参考链接 Redis 源码简洁剖析系列 select, poll, epoll 关于 select, poll, epoll,网络 IO 演变发展过 ...
- .NET Core GC对象 分配(GC Alloc)底层原理浅谈
对象分配策略 .NET程序的对象是由CLR控制并分配在托管堆中,如果是你,会如何设计一个内存分配策略呢? 按需分配,要多少分配多少,移动alloc_ptr指针即可,没有任何浪费.缺点是每次都要向OS申 ...
- 基于Qt的OFD阅读器开发原理与实践
摘要 本文详细探讨了基于Qt开发OFD阅读器的原理与实践.通过解析OFD文件格式.构建文档结构.实现页面渲染.处理用户交互以及进行性能优化,本文展示了如何使用Qt框架开发一个功能强大.性能优异的OFD ...
- Java Spring Cloud Nacos 配置修改不生效的解决方法
一.引言 在微服务架构中,配置管理是一个关键部分.Nacos作为一个动态服务发现.配置管理和服务管理平台,广泛应用于Java Spring Cloud项目中.然而,有时在修改Nacos配置后,这些更改 ...
- linux:计划任务
at 计划执行一次性任务 at + time 表示方法: atq -c:查看目前等待执行的任务 atrm 任务编号 :删除at任务 [root账户才能删除,其他用户只能查询] crontab ...
- uni-app消息提示框
这个组件在界面==>交互反馈中 经常使用的哈: 特别注意:如果值title太长了,可能就一个值都不会显示 1.提示信息:可以用于操作某一项提示用户是否成功: uni.showToast({ ti ...
- 本地部署最强人工智能服务:方案(一)Chatbox+硅基流动(满血DeepSeek R1)
最近DeepSeek的服务器经常出现服务器繁忙,而且本地运行大模型很吃力,我的960m挺吃力的.不过华为后续和硅基流动一起搭建起了DeepSeek的API服务,注册就送14块钱,换算下来 4块/M t ...
- PostgreSQL:数据库迁移与版本控制
title: PostgreSQL:数据库迁移与版本控制 date: 2025/2/6 updated: 2025/2/6 author: cmdragon excerpt: 在现代软件开发中,数据库 ...