【Docker】容器简介和构建镜像

【Linux】Buildx构建异构docker平台镜像(x86-ARM) Docker Buildx 是 Docker的CLI插件,来自于。自从Docker 18.06 开始这个插件直接集成到了Docker build 中,直至成文之日,它仍处于Experimental状态,所以想使用它需要显式地开启它。Buildx 是一个构建工具, 它可以帮助用户快速、高效地构建 Docker 镜像, 并支持多种平台的构建。使用 buildx, 用户可以在单个命令中构建多种架构的镜像, 例如 x86 和 ARM 架构, 而无需手动操作多个构建命令。 阅读详情

Docker简介

Docker和虚拟机区别

Docker守护进程可以直接和主操作系统进行通信,为各个Docker容器分配资源,而虚拟机有各自的从操作系统。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

Docker有着小巧、迁移部署快速、运行高效等特点,但隔离性比服务器虚拟化差:Docker上运行不同的应用实例,相互隔离,但用同一个主机操作系统内核。因为共享操作系统内核,因此相关信息会共享。
服务器虚拟化就是在物理主机及虚拟化层上,建立了多个独立的虚拟机,其拥有完全隔离的空间,每个虚拟机当前虚拟机的操作系统内核,无法管理其它仓库。不存在信息共享的情况。

在这里插入图片描述

Docker优点

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。所以它可以使开发、测试、生产环境一致,我们只需要维护一个docker镜像即可。
Docker的体量小,启动速度秒级,性能接近物理机,易于跨平台。

镜像、容器和仓库

Docker 由镜像(Image)、容器(Container)、仓库(Repository) 三部分组成。

Docker 的镜像是一个只读的模板,可以简单的类比为电脑装系统用的系统盘,包括操作系统,以及必要的软件。例如,一个镜像可以包含一个完整的 centos 操作系统环境,并安装了 Nginx 和 Tomcat 服务器。
镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。我们可以使用 docker images 来查看本地镜像列表。
注意一个镜像不能超过 127 层。

Docker 利用容器(Container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。我们可以使用 docker ps -a 查看本地运行过的容器。

Docker 的仓库用于存放镜像。这一点,和 Git 非常类似。我们可以从中心仓库下载镜像,也可以从自建仓库下载。同时,我们可以把制作好的镜像 commit 到本地,然后 push 到远程仓库。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库 Dock Hub,国内的公开仓库也有很多选择,例如阿里云等。

RUN

docker run
Docker 通过 run 命令来启动一个新容器。Docker 首先在本机中寻找该镜像,如果没有安装,Docker 在 Docker Hub 上查找该镜像并下载安装到本机,最后 Docker 创建一个新的容器并启动该程序。
当第二次执行 docker run 时,因为 Docker 在本机中已经安装该镜像,所以 Docker 会直接创建一个新的容器并启动该程序。

docker run 每次使用都会创建一个新的容器,我们以后再次启动这个容器时,只需要使用命令 docker start 即可。这里, docker start 的作用在用重新启动已存在的镜像,而docker run 包含将镜像放入容器中 docker create ,然后将容器启动 docker start。
docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行。
Docker start命令为容器文件系统创建了一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间。
docker run = (docker pull) + docker create + docker start

通过 exit 命令关闭 Docker 容器。当然,如果我们运行的是后台的守护进程,我们也可以通过 docker stop web 来停止。
docker start 重启
docker attach 命令切换到运行交互式容器

cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker run -p 80 --name web -i -t centos /bin/bash

[root@6af5d358eb2b /]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

[root@6af5d358eb2b /]# yum install -y nginx

cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker stop web
[sudo] password for cherie: 
web
cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker start web
web
cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker attach web
[root@6af5d358eb2b /]# exit
exit
仓库

Docker 的仓库用于存放镜像。我们可以从中心仓库下载镜像,也可以从自建仓库下载。同时,我们可以把制作好的镜像从本地推送到远程仓库。

当我们创建一个新的容器时,Docker 会构建出一个镜像栈,存在很多镜像层,每个镜像层都是只读的,栈的最顶层有一个读写层,如图所示。
在这里插入图片描述

docker images可以查看本地的镜像

cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        3 months ago        237MB
hello-world         latest              fce289e99eb9        15 months ago       1.84k

TAG: 镜像标签,其中 lastest 表示最新版本。注意的是,一个镜像可以有多个标签,那么我们就可以通过标签来管理有用的版本和功能标签。

docker pull 拉取镜像
docker search 查找镜像
docker ps -a 查看容器

cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker search nginx
cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker pull nginx
cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker run -p 8080:80 -d --name nginx nginx
cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker ps -a

通过 -d 选项告诉 Docker 在后台运行容器的守护进程。并且,通过 8080:80 告诉 Docker 8080 端口是对外开放的端口,80 端口对外开放的端口映射到容器里的端口号。

除了Docker Hub,也可以切换到国内的其他替代注册服务器,比如阿里云,并拉取公开的镜像。

构建我的镜像

Docker 提供自定义镜像的能力,它可以让我们保存对基础镜像的修改,并再次使用。那么,我们就可以把操作系统、运行环境、脚本和程序打包在一起,并在宿主机上对外提供服务。

构建Dockerfile文件

Dockerfile 是一个由一堆命令+参数构成的脚本,使用 docker build 即可执行脚本构建镜像,自动的去做一些事,首先我们创建一个空的Dockerfile文件。

cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ mkdir dockerfile_test
cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ cd dockerfile_test
cherie@iZbp1a6z4wmydw6sukxhkbZ:~/dockerfile_test$ touch Dockerfile
cherie@iZbp1a6z4wmydw6sukxhkbZ:~/dockerfile_test$ nano Dockerfile

编写Dockerfile文件,格式为,开头必须 FROM BASE_IMAGE 指定基础镜像。然后,我们通过 MAINTAINER xxx “xxx@x.com” 指定该镜像的作者和邮箱。之后就可以执行一系列命令(下载安装等),Docker 在执行每个指令之后都会创建一个新的镜像层并且进行提交。

FROM centos:7 
MAINTAINER LiangGzone "lianggzone@163.com" 
RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 
RUN yum install -y nginx 
EXPOSE 80
FROM rccoder/myworkspace:v1 
RUN mkdir a
build

我们使用 docker build 命令进行构建,指定 - t 告诉 Docker 镜像的名称和版本。注意的是,如果没有指定任何标签,Docker 将会自动为镜像设置一个 lastest 标签。最后还有一个 . 是为了让 Docker 到当前本地目录去寻找 Dockerfile 文件。

cherie@iZbp1a6z4wmydw6sukxhkbZ:~$ sudo docker build -t="cherie/nginx_demo:v1" cherie@iZbp1a6z4wmydw6sukxhkbZ:~/dockerfile_test$ sudo docker images
将镜像推送到远程仓库

首先要docker login
之后docker push NAME[:TAG]

sudo docker push cherie/nginx_demo:v1

命令附录

docker pull 从仓库获取镜像
例 docker pull registry.hub.docker.com/centos:centos6 ,即从注册服务器 registry.hub.docker.com 中的 centos 仓库来下载标记为 centos6 的镜像。
docker images 查看本地镜像列表
docker build 利用 Dockerfile 来创建镜像
例 docker build -t hainiu_httpd:1.0 .
docker push 上传镜像
docker run 运行容器(=docker create创造容器 + docker start启动容器)
docker exec 进入容器
docker stop 停止容器
docker rm 删除容器
docker ps 查看容器列表
docker rmi 删除镜像
docker save 保存镜像
docker export 导出容器(移除了元数据)

部分参考:
https://www.cnblogs.com/davidwang456/articles/9578409.html
https://juejin.im/post/5cacbfd7e51d456e8833390c
https://juejin.im/post/5ad3172c5188257ddb10109a#heading-10
https://www.runoob.com/docker/ubuntu-docker-install.html

Docker 容器和镜像使用 阅读详情

相关推荐

【工具使用-Docker容器】构建自己的镜像和容器

本文介绍了Docker镜像和容器的基本概念,详细讲解了如何构建和管理Docker镜像,包括: 镜像作为只读模板包含运行所需内容,容器是镜像的运行实例 使用Dockerfile构建包含Ubuntu 22.04、ROS2 Humble、CUDA和PyTorch的完整镜像 镜像构建命令和验证方法 如何将镜像推送到Harbor私有仓库 在Ubuntu系统上安装Docker的详细步骤,包括添加阿里云源 文章提供了完整的Dockerfile示例和详细操作命令,适用于开发环境搭建。

欢迎来到我的博客~ 918

构建个性化Docker镜像

Docker file是一个包含用于构建镜像的命令脚本文件。Docker通过读取Dockerfile中指令自动生成映像。Docker build命令用于从Dockerfile构建映像。Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

m0_75254642的博客 1317

Docker入门流程(创建容器到构建镜像)

Docker入门和运行ros系统

qq_43377917的博客 3828

Docker容器技术

Docker之父Docker就好比传统的货运集装箱。

LongHongYu908的博客 5372

Docker容器之Dockerfile构建镜像

Docker容器之Dockerfile构建镜像

liji133122的博客 2488

【Tools系列】docker镜像和容器基本操作

DATE: 2021.10.14 文章目录0、docker简介1、镜像 IMAGE1.1、查看镜像列表1.2、拉取镜像1.3、删除镜像1.4、构建镜像2、容器 CONTAINER2.1、启动容器的方法2.2、拷贝本地文件到容器内2.3、退出容器2.4、查看容器状态2.5、停止容器2.6、启动已停止的容器2.7、重启已停止的容器2.8、进入容器的方法2.9、导出和导入容器2.10、删除容器 0、docker简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 529

Docker容器技术详解

Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。Docker 允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,这个容器可以在任何支持 Docker 的环境中运行。

weixin_74812406的博客 1651

手动构建自己的docker容器镜像实战

手动构建属于自己的镜像

低调,谦虚,自律,反思,成长,保持热爱,奔赴梦想 4769

Docker简介

Docker的简单介绍

正在努力的小破孩的博客 1331

什么是Docker镜像与容器?

镜像(Image)和容器(Container)是两个核心概念,它们共同构成了Docker生态的基础。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6816

【Docker镜像】使用Dockerfile构建Docke容器镜像

【Docker镜像】使用Dockerfile构建Docke容器镜像

jks212454的博客 2710

Docker中容器和镜像的关系【通俗易懂】

docker中容器和镜像的关系是什么? 最近学习了docker,感觉容器和镜像学的有点模糊。 特别是镜像和容器,感觉完全分不开,所以在此学习,然后总结了一下,便于后面的学习。 docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository)。 do...

Carroll的博客 5万+

ANSYS Workbench对称分析进阶:手把手教你用Pre-Meshed Cyclic Region处理外部导入的复杂网格模型

本文详细介绍了ANSYS Workbench中Pre-Meshed Cyclic Region功能在处理外部导入复杂网格模型时的应用。通过循环对称分析技术,可显著减少计算资源消耗,特别适用于叶轮机械、齿轮组等周期性结构分析。文章深入解析了该功能的底层逻辑,并提供了从NASTRAN文件导入的离心压缩机叶轮案例,帮助工程师克服网格匹配难题。

weixin_28630185的博客 311

Docker构建镜像方法

通过本教程,你学会了如何通过Dockerfile构建自己的 Docker 镜像,并且学会了如何运行和管理容器。Docker 的强大之处在于它能够将环境和应用程序封装在一个镜像中,实现高度可移植性。

专注于Python编程技术的分享与交流,致力于帮助开发者提升编程技能,解决实际问题,探索Python的无限可能。 2852

本地AI助手部署指南:DeepSeek Harness与Ollama集成实践

AI Agent作为当前人工智能领域的热门技术,通过模拟人类决策过程,能够自主规划、调用工具并执行复杂任务。其核心原理在于将大语言模型的推理能力与外部工具API相结合,形成可闭环的工作流。这种技术架构的价值在于显著提升了AI系统的实用性和自动化水平,使其从单纯的对话工具转变为能够解决实际问题的智能助手。在应用场景上,AI Agent广泛应用于代码生成、数据分析、自动化办公等领域。本文聚焦于如何通过DeepSeek Harness平台与Ollama本地模型的集成,实现隐私安全、离线可用的AI助手部署方案,特别

dengjuanshou7445的博客 473

Habitat安装全网最详细教程,手把手带你跑通example.py(全网唯一)

全网最详细具身智能仿真平台habitat的安装教程

shannanshouyin的博客 2754

Docker删除镜像和容器

删除docker中的镜像

Button的博客 24万+

3分钟搞定!QQ音乐歌单导出Excel保姆级教程(含歌单ID获取技巧)

本文提供了一份详细的QQ音乐歌单导出Excel保姆级教程,帮助用户轻松备份和管理个人音乐收藏。教程核心在于获取歌单ID,并利用浏览器开发者工具执行脚本提取数据,最后通过Excel导入功能快速生成结构化表格。整个过程无需编程基础,3分钟即可搞定,是个人数据管理的实用技巧。

weixin_29008691的博客 1383

【Docker】Docker镜像和Docker容器

Docker镜像和Docker容器和实战

qq_53893431的博客 3680

机器人控制入门:用SAC算法让机械臂学会抓取(PyBullet仿真教程)

本文详细介绍了如何使用SAC算法在PyBullet仿真环境中训练机械臂完成抓取任务。通过强化学习中的软Actor-Critic(SAC)算法,结合熵最大化机制和双Q网络架构,有效解决了机械臂控制中的探索难题。教程包含环境搭建、算法原理、状态空间设计、奖励函数优化等核心内容,并提供了实用的训练技巧和参数调优指南。

weixin_29091105的博客 357

Cadence Allegro 17.2 PCB设计避坑指南:从焊盘制作到封装绘制的完整流程

本文详细解析了Cadence Allegro 17.2在PCB设计中的关键操作技巧,从焊盘制作到封装绘制的完整流程。通过0402电阻和2.54mm排针的实例,揭示新手常见错误及解决方案,包括焊盘参数设置、层类型区分和坐标输入规范,帮助工程师避免设计返工和生产事故。

weixin_28683391的博客 404

docker 容器保存为镜像_Docker容器和镜像操作

前言 Docker 容器和镜像操作,记录下来! 容器创建一个新的容器(ubuntu)并启动$ docker run -dit --name ubuntu ubuntu在容器内执行命令(容器在后台启动),用 docker exec 命令$ docker exec -it ubuntu bash 注意:使用exit 命令退出在容器内执行命令。查看容器详细信息& docker inspect ...

weixin_39996496的博客 4082

Qwen2.5-Omni实战:5分钟搞定多模态AI模型本地部署(含Thinker-Talker架构解析)

本文详细介绍了Qwen2.5-Omni多模态AI模型的本地部署流程,包括硬件配置、环境准备和实战应用开发。特别解析了其创新的Thinker-Talker架构,该架构通过TMRoPE位置编码实现跨模态同步处理,大幅提升多模态任务效率。5分钟即可完成部署,适合开发者快速实现文本、图像和音频的联合处理。

weixin_29085865的博客 170

Docker容器和镜像的导入、导出

一、镜像导出 save 查看镜像 docker images 导出镜像 docker save -o test.tar image_name 或者 docker save image_name > /test.tar 二、容器导出 export 导出容器,命令格式为: docker export [-o|--output[=""]] CONTATINER 或 docker expor...

wise_nut的博客 1万+

Java 类与对象 -- Java 语言的类与对象、构造器、static、final、包和 JAR

本篇文章我们将深入了解 Java 语言中的类与对象,探讨构造器、`static`、`final`、包和 JAR 文件。这些概念是面向对象编程的核心,对于理解和掌握 Java 至关重要。

栗筝i的博客 5032

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Docker镜像、容器及Dockerfile

文章目录一. Docker镜像1. 什么是docker镜像2. Docker镜像加载原理3. Commit 镜像二、Docker容器数据卷1. 使用数据卷2. 具名挂载和匿名挂载3. 初始Dockerfile4. 数据卷容器三、DockerFile1. 简介2. 构建过程3. DockerFile的指令4. 测试构建一个centos5. 发布自己的镜像5.1 发布到docker hub5.2 发布到阿里云镜像服务 一. Docker镜像 1. 什么是docker镜像 镜像是一种轻量级、可执行的独立软件包

Gang-bb的博客 7846

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 简单上手 PIPENV
下一篇: 【性能】DJANGO + REDIS 缓存提速
小小小菜鱼
博客等级 码龄11年 504粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值