Docker
文章平均质量分 86
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 i
Young丶
这个作者很懒,什么都没留下…
展开
-
Dockerfile 里指定执行命令用RUN 、ENTRYPOING和用CMD有何不同?
结论:运行时机不太一样。RUN是在Build时运行的,先于CMD和ENTRYPOINT。Build完成了,RUN也运行完成,在运行阶段运行CMD或者ENTRYPOINT。ENTRYPOINT和CMD的不同点在于执行docker run时参数传递方式,CMD指定的命令可以被docker run传递的命令覆盖,例如,如果用CMD指定:...CMD ["echo"]然后运行docker run CONTAINER_NAME echo foo那么CMD里指定的echo会被新指定的echo覆盖,所以原创 2021-12-16 15:59:12 · 4069 阅读 · 0 评论 -
docker小技巧-清理未使用空间
删除数据卷数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个参数。删除容器与数据卷停止容器docker stop XXX-v 参数用于删除数据卷docker rm -v XXX删除未使用的volume#列出未使用的volume$ docker volume ls -qf d原创 2021-04-15 16:17:30 · 2688 阅读 · 0 评论 -
Dockerfile ENV和ARG的区别与应用
在写Dockerfile时, ENV和ARG,包括.env都是很容易弄混的概念。让我们对其进行区分。.env文件和docker-compose.yml配合使用。并不和Dockerfile一起使用env_file在Dockerfile中使用,当环境变量很多,可食用该参数,指定对应的变量文件。ARG在Dockerfile中使用,仅仅在build docker image的过程中(包括CMD和ENTRYPOINT)有效,在image被创建和container启动之后,无效。如果你在Dockerfil转载 2021-04-15 10:47:11 · 4468 阅读 · 0 评论 -
Docker(十三):Docker 清理命令集锦
这篇文章主要介绍了Docker 清理命令集锦,需要的朋友可以参考下杀死所有正在运行的容器docker kill $(docker ps -a -q)删除所有已经停止的容器docker rm $(docker ps -a -q)删除所有未打 dangling 标签的镜像docker rmi $(docker images -q -f dangling=true)删除所有镜像docker rmi $(docker images -q)为这些命令创建别名# ~/.b.原创 2020-08-17 15:31:08 · 1104 阅读 · 0 评论 -
Docker(一):这可能是最为详细的Docker入门总结
Docker 是什么?说了这么多, Docker 到底是个什么东西呢?我们在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机。可能很多读者朋友都用过虚拟机,而对容器这个概念比较的陌生。我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件。每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资原创 2020-07-09 16:23:04 · 2814 阅读 · 0 评论 -
SpringBoot+Docker:高效容器化的最佳实践
您可能知道 Docker 中的所有镜像都有 Linux 内核的基础层,因此我们不需要将这部分添加到我们的镜像中,因为我们的基础镜像提供了您的应用程序所需的底层内核和依赖项。在此示例中,我们使用多阶段构建,首先在单独的层中构建 Spring Boot 应用程序,然后将构建的 jar 文件复制到最终镜像中。通过这种方式使用多阶段构建,我们可以创建一个精简的 Docker 映像,其中仅包含运行 Spring Boot 应用程序所需的依赖项和文件。通过这样做,我们可以减小图像的大小并提高应用程序的性能。原创 2024-02-22 18:12:02 · 1338 阅读 · 3 评论 -
24 个常见的 Docker 疑难杂症处理技巧!!!记得点赞收藏
的朋友可能都遇到过,在编写启服务启动配置文件的时候,添加环境变量时到底是使用单引号、双引号还是不使用引号的问题?中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。反正我是遇到过很多问题,都是因为添加引号导致的服务启动异常的,后来得出的结论就是一律不使引号。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个。的状态,通过如下日志发现,原来是复制配置文件启动的时候,提示磁盘空间不足。原创 2023-10-25 09:53:32 · 2514 阅读 · 0 评论 -
docker update 命令
更新一个或多个容器的配置。原创 2023-08-22 09:24:02 · 11985 阅读 · 0 评论 -
k8s 磁盘不够用,docker数据迁移 导致 /tmp Permission denied,docker优化日志 日志切割, 日志自动删除
K8s 集群 随着pod运行服务的越来越多,运行时间越来越大,docker目录占用磁盘空间也在逐渐变大,终于在最近磁盘彻底占满导致容器启动不起来并提示"no device space left"。为了防止以后出现docker占用磁盘容量不够的情况决定对docker数据目录迁移。原创 2023-03-18 21:42:02 · 68332 阅读 · 4 评论 -
图解 Docker 架构
Driver是Docker架构中的驱动模块。通过Driver驱动,Docker可以实现对Docker容器执行环境的定制。即Graph负责镜像的存储,Driver负责容器的执行。docker是一个C/S模式的架构,后端是一个松耦合架构,模块各司其职。附:本文在《docker源码分析》基础上进行整理。Docker Daemon的架构图。networkdriver的架构图。libcontainer的架构图。graphdriver架构图。execdriver的架构图。container架构。原创 2022-10-23 11:10:05 · 25185 阅读 · 1 评论 -
docker 容器如何使用tini 作为启动进程并 清理、管理 Docker 容器僵死进程
请注意,创建“僵尸进程”通常是不被允许的(也就是说,理想情况下,您应该修复代码,这样就不会创建“僵尸进程”),但是对于像Jenkins这种应用来说,它们是不可避免的:因为Jenkins通常运行的代码不是由Jenkins维护者编写的(也就是您的Jenkins构建脚本),所以他们也无法“修复代码”。首先,如果将Jenkins以PID 1的身份运行,那么很难区分继承给Jenkins的进程(应该被收割)和Jenkins自己产生的进程(不应该被收割,因为还有其他代码已经在等待它们执行)。原创 2022-09-30 10:36:44 · 30290 阅读 · 0 评论 -
知识点-如何构建一个高品质的docker镜像?这些小窍门和知识点你应该掌握
得益于 OCI 规范的存在,只要构建出的镜像遵守 OCI 规范,就可以交给遵守 OCI 规范的容器运行时去运行,这样就使得容器技术的发展,更加多元化,我们也不必再拘泥于一款工具使用,可以按需选择那些能提高我们工作效率的工具。原创 2022-05-01 10:27:05 · 2295 阅读 · 0 评论 -
Dockerfile文件全面详解
Docker 可以通过读取 Dockerfile 中的指令自动构建镜像。 Dockerfile 是一个文本文档,其中包含了用户创建镜像的所有命令和说明。一、 变量变量用 *KaTeX parse error: Undefined control sequence: \* at position 14: variable_name\̲*̲** 或者 ***{variable_name}* 表示${variable:-word}表示如果variable设置,则结果将是该值。如果variable未设置,w原创 2021-11-08 23:33:46 · 2262 阅读 · 0 评论 -
[k8s] kubernetes从harbor拉取镜像没有权限解决方法 unauthorized
Kubernetes在拉取私服(Harbor)镜像时,经常出现问题,导致ImagePullBackOff。查看kubectl describe pod …,还经常发现这类错误:Failed to pull image "192.168.1.13:9080/ces/ces-gateway:1.1-SNAPSHOT": rpc error: code = Unknown desc = Error response from daemon: unauthorized: unauthorized to acces原创 2021-09-15 17:42:56 · 7720 阅读 · 0 评论 -
Docker层和虚悬镜像(dangling image)介绍
当你拉取Docker镜像时,你会注意到它被拉取成不同的层。另外,当你创建自己的Docker镜像时,也会创建多个层。在本文中,我们将更好地理解Docker层。1.什么是Docker层?Docker镜像由几层组成。每层都对应 Dockerfile中的特定指定。Docker层创建指令有: RUN, COPY, ADD。其他指令将创建中间层,并且不会影响镜像的大小。我们看一个例子:创建一个Spring Boot MVC应用程序 并且在Maven构建中创建Docker镜像。以上这些资源可从 GitHub 获得。转载 2021-04-16 15:06:35 · 374 阅读 · 0 评论 -
【Spring boot 实战】使用Maven插件构建Docker镜像
本文主要介绍如何使用Maven插件将SpringBoot应用打包为Docker镜像,并上传到私有镜像仓库Docker Registry的过程。Docker RegistryHarbor 2.x搭建 参考《搭建Harbor 2.x仓库 - docker私仓搭建》这里不再累赘。使用Maven构建本地Docker镜像我们以项目spring-admin为例在应用的pom.xml文件中添加dockerfile-maven-plugin的依赖 <plugin> .原创 2021-04-14 11:17:24 · 1155 阅读 · 0 评论 -
搭建Harbor 2.x仓库 - docker私仓搭建
搭建Harbor仓库Harbor是什么?为什么会用到Harbor?harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是 Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓 库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum 可以提供存储chart数据的仓库【注:helm就相当于k8s的yum】另外它还整合了两个开源的安全组件,一个是Nota原创 2021-04-14 10:24:46 · 606 阅读 · 0 评论 -
Docker(十五):Docker实战 使用 docker-compose
本章通过一个具体的demo来了解 docker-composedocker-compose 是做什么的在构建一个完整的服务时,我们通常启动一个容器, 一旦出现多个容器需要同时启动的时候手打是下下之策, 因为时间一长难免会忘记细节,写脚本也不是不可以,但是大家没有达成共识时脚本也很难维护…docker-compose 就是来解决这个痛点, 只需要按照统一的格式书写,那么大家生成的容器也都是一致的, 在团队开发的时候扔一个配置好的 docker-compose 能节省很多时间和口水配置 docker.原创 2021-02-19 14:47:36 · 878 阅读 · 0 评论 -
Docker(十四):Docker:网络模式详解
Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面。Docker自身的4种网络工作方式,和一些自定义网络模式安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、hosthost:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。None:该模式关闭了容器的网络功能。Bridg转载 2021-02-19 11:00:42 · 1257 阅读 · 0 评论 -
在CentOS8下安装docker遇到的containerd.io >= 1.4.1解决方法
官方的CentOS 8 安装 docker 步骤:# 1、yum 包更新到最新yum update# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yum install -y yum-utils device-mapper-persistent-data lvm2# 3、 设置yum源yum-config-manager --add-repo https://mirrors.aliyun.com/dock原创 2020-12-14 12:45:25 · 11424 阅读 · 0 评论 -
Docker(十二):Docker+Jenkins+Nginx+Spring Boot 自动化部署项目
前言虽然Docker已经是风靡全球的容器技术了,统一环境避免环境问题上是Docker的主要吸引点之一,但使用时详细还是会遇到不少问题的,比如个人搭建时曾思考过这些问题:Jenkins官网既然有Docker上安装Jenkins的流程了,那我该怎么使用Jenkins容器呢?如果使用Jenkins容器,我该怎么通过Jenkins容器部署SpringBoot项目?是通过Jenkins容器与SpringBoot容器中的文件交互进行项目部署吗?这能做到吗?又或是把SpringBoot项目放到Jenkins容器中原创 2020-08-17 15:03:49 · 1105 阅读 · 0 评论 -
Docker(十一):Docker实战 安装 PHP 5.6、7
Docker 安装 PHP安装 PHP 镜像方法一、docker pull php查找 Docker Hub 上的 php 镜像:可以通过 Sort by 查看其他版本的 php,默认是最新版本 php:latest。此外,我们还可以用 docker search php 命令来查看可用版本:runoob@runoob:~/php-fpm$ docker search phpNAME DESCRIPTION原创 2020-08-12 16:53:10 · 2734 阅读 · 0 评论 -
Docker(十):Docker实战 Docker 安装 Nginx
Docker 安装 NginxNginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务 。1、查看可用的 Nginx 版本访问 Nginx 镜像库地址: https://hub.docker.com/_/nginx?tab=tags。可以通过 Sort by 查看其他版本的 Nginx,默认是最新版本 nginx:latest。你也可以在下拉列表中找到其他你想要的版本:此外,我们还可以用 docker search nginx 命令来原创 2020-08-12 15:12:55 · 1203 阅读 · 0 评论 -
Docker(九):Docker实战 安装 Ubuntu
Docker 安装 UbuntuUbuntu 是基于 Debian 的 Linux 操作系统。1、查看可用的 Ubuntu 版本访问 Ubuntu 镜像库地址: https://hub.docker.com/_/ubuntu?tab=tags&page=1。可以通过 Sort by 查看其他版本的 Ubuntu。默认是最新版本 ubuntu:latest 。你也可以在下拉列表中找到其他你想要的版本:2、拉取最新版的 Ubuntu 镜像$ docker pull ubuntu或者原创 2020-08-12 14:47:23 · 1163 阅读 · 1 评论 -
Docker(八):Docker Compose
Docker ComposeCompose 简介Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程。Compose 使用的三个步骤:使用 Dockerfile 定义应用程序的环境。使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境原创 2020-08-10 18:26:39 · 1152 阅读 · 0 评论 -
Docker(七):Docker build 、Docker Dockerfile 详解
Docker Dockerfile什么是 Dockerfile?Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。使用 Dockerfile 定制镜像这里仅讲解如何运行 Dockerfile 文件来定制一个镜像,具体 Dockerfile 文件内指令详解,将在下一节中介绍,这里你只要知道构建的流程即可。1、下面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)在一个空目录下原创 2020-08-10 17:51:13 · 8807 阅读 · 0 评论 -
Docker(六):Docker 仓库管理与镜像加速
Docker 仓库管理仓库(Repository)是集中存放镜像的地方。以下介绍一下 Docker Hub。当然不止 docker hub,只是远程的服务商不一样,操作都是一样的。Docker Hub目前 Docker 官方维护了一个公共仓库 Docker Hub。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。注册在 https://hub.docker.com 免费注册一个 Docker 账号。登录和退出登录需要输入用户名和密码,登录成功后,我们就可以从 docker原创 2020-08-10 17:00:39 · 1380 阅读 · 0 评论 -
Docker(五):Docker Volume
一、将Docker数据挂载到容器在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即***数据不随着Container的结束而结束***),需要将数据从宿主机挂载到容器中。目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中:(1)volumes:Docker管理宿主机文件系统的一部分,默认位于 /var/lib/docker/volumes 目录中;(最常用的方式)由上图可以知道,目前所有Container的数据都保存在了这个目录下边,由于没有在创建时指定卷,所以Doc原创 2020-07-19 16:08:59 · 1679 阅读 · 0 评论 -
Docker(四):Docker 命令大全
容器生命周期管理docker run :创建一个新的容器并运行一个命令语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS说明:-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;-d: 后台运行容器,并返回容器ID;-i: 以交互模式运行容器,通常与 -t 同时使用;-P: 随机端口映射,容器内部端口随机映射到主机的端口-p: 指定端口映射,格式为:主机(宿主)端口原创 2020-07-09 18:24:46 · 1498 阅读 · 0 评论 -
Docker(三):Docker 镜像使用
Docker ImageDocker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。我们可将 Docker 镜像看成只读模板,通过它可以创建 Docker 容器。镜像有多种生成方法:从无到有开始创建镜像下载并使用别人创建好的现成的镜像在现有镜像上创建新的镜像我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作 D原创 2020-07-09 16:45:47 · 5049 阅读 · 0 评论 -
Docker(二):Docker 容器使用
在上文的学习中,我们简单地讲解了 Docker 的基本架构。了解到了 Docker 使用的是 C/S 结构,即客户端/服务器体系结构。明白了 Docker 客户端与 Docker 服务器进行交互时,Docker 服务端负责构建、运行和分发 Docker 镜像。知道了 Docker 客户端和服务端可以运行在一台机器上,我们可以通过 RESTful、Stock 或网络接口与远程 Docker 服务端进行通信。我们从下图可以很直观的了解到 Docker 的架构:Docker 的核心组件包括:Dock原创 2020-07-09 16:41:58 · 1317 阅读 · 0 评论