-
摘要:容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。Docker是第一个使容器能在不同机器之间移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。容器和虚拟机具有相似的资源隔离和分配方式,容器虚拟化了操作系统而不是硬件,更加便携和高效。图1 容器 vs 虚拟机相比于使用虚拟机,容器有如下优点:更高效的利用系统资源由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,容器对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。更快速的启动时间传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间,大大节约了开发、测试、部署的时间。一致的运行环境开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些问题并未在开发过程中被发现。而Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。更轻松的迁移由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机,其运行结果是一致的。因此可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。更轻松的维护和扩展Docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker团队同各个开源项目团队一起维护了大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。Docker容器典型使用流程Docker容器有如下三个主要概念:镜像:Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。镜像仓库:Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。容器:Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。典型的使用流程如图2所示:图2 Docker容器典型使用流程(1)首先开发者在开发环境机器上开发应用并制作镜像。Docker执行命令,构建镜像并存储在机器上。(2)开发者发送上传镜像命令。Docker收到命令后,将本地镜像上传到镜像仓库。(3)开发者向生产环境机器发送运行镜像命令。生产环境机器收到命令后,Docker会从镜像仓库拉取镜像到机器上,然后基于镜像运行容器。使用示例下面使用Docker将基于Nginx镜像打包一个容器镜像,并基于容器镜像运行应用,然后推送到容器镜像仓库。安装DockerDocker几乎支持在所有操作系统上安装,用户可以根据需要选择要安装的Docker版本。在Linux操作系统下,可以使用如下命令快速安装Docker。curl -fsSL get.docker.com -o get-docker.shsh get-docker.sh说明: CentOS 8.0操作系统使用上述脚本安装Docker会出现问题,建议使用如下命令安装较低版本Docker。 wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo yum install docker-ce-18.06.3.ce -y systemctl restart docker Docker打包镜像 Docker提供了一种便捷的描述应用打包的方式,叫做Dockerfile,如下所示: # 使用官方提供的Nginx镜像作为基础镜像 FROM nginx:alpine # 执行一条命令修改Nginx镜像index.html的内容 RUN echo "hello world" > /usr/share/nginx/html/index.html # 允许外界访问容器的80端口 EXPOSE 80 执行docker build命令打包镜像。 docker build -t hello . 其中-t表示给镜像加一个标签,也就是给镜像取名,这里镜像名为hello。. 表示在当前目录下执行该打包命令。 执行docker images命令查看镜像,可以看到hello镜像已经创建成功。您还可以看到一个Nginx镜像,这个镜像是从镜像仓库下载下来的,作为hello镜像的基础镜像使用。 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello latest d120ec16dcea 17 minutes ago 158MB nginx alpine eeb27ee6b893 2 months ago 148MB 本地运行容器镜像 有了镜像后,您可以在本地执行docker run命令运行容器镜像。 # docker run -p 8080:80 hello docker run命令会启动一个容器,命令中-p是将本地机器的8080端口映射到容器的80端口,即本地机器的8080端口的流量会映射到容器的80端口,当您在本地机器访问 http://127.0.0.1:8080时,就会访问到容器中,此时浏览器中返回的内容应该就是“hello world”。 把镜像推送到镜像仓库 华为云提供了容器镜像服务SWR,您也可以将镜像上传到SWR,下面演示如何将镜像推送到SWR。详细的方法请参见客户端上传镜像,本文档后续的示例中将主要使用SWR作为示例。 首先登录SWR控制台,在左侧选择“我的镜像”,然后单击右侧“客户端上传镜像”,在弹出的窗口中单击“生成临时登录指令”,然后复制该指令在本地机器上执行,登录到SWR镜像仓库。 上传镜像前需要给镜像取一个完整的名称,如下所示: # docker tag hello swr.cn-east-3.myhuaweicloud.com/container/hello:v1 这里swr.cn-east-3.myhuaweicloud.com是仓库地址,每个华为云区域的地址不同,v1则是hello镜像分配的版本号。 swr.cn-east-3.myhuaweicloud.com是仓库地址,每个华为云区域的地址不同。 container是组织名,组织一般在SWR中创建,如果没有创建则首次上传的时候会自动创建,组织名在单个区域内全局唯一,需要选择合适的组织名称。 v1则是hello镜像分配的版本号。 然后执行docker push命令就可以将镜像上传到SWR。 # docker push swr.cn-east-3.myhuaweicloud.com/container/hello:v1 当需要使用该镜像时,使用docker pull命令拉取(下载)该命令即可。 # docker pull swr.cn-east-3.myhuaweicloud.com/container/hello:v1
-
2020-09-09:裸写算法:两个线程轮流打印数字1-100。
-
如标题所示问题
-
2020-09-07:Docker的四种网络类型?
-
2020-09-06:Docker的命名空间有哪些?
-
2020-08-27:OpenStack与Docker的区别?
-
2020-08-27:OpenStack与Docker的区别?
-
鲲鹏欧拉2.8已安装docker,是否支持用docker安装postgresql 12.4数据库
-
下载Docker安装包。wget https://download.docker.com/linux/static/stable/aarch64/docker-18.09.8.tgz --no-check-certificate解压与安装。tar xvpf docker-18.09.8.tgzcp -p -f docker/* /usr/bin准备环境。为使Docker可以正常使用,还需要关闭SELinux及防火墙。setenforce 0systemctl stop firewalldsystemctl disable firewalld此时只是暂时禁用SELinux,如果要长期禁用SELinux,还需要修改“/etc/selinux/config”文件。将SELINUX=enforcing改为SELINUX=permissive或disabled,才能长期有效。重启服务器后,修改的配置文件生效。配置docker.service服务。vim /usr/lib/systemd/system/docker.service编辑文件内容如下:
-
您好: 如果是华为某个项目组将https://hub.docker.com的cent os 8镜像发布到华为镜像库,以加快下载速度,方便国内客户使用。 想以“华为名义发布”而不是“开发者匿名发布”,您这边是否有相关案例和经验? 我工号c00258524. 求经验
-
参照华为指导文件: https://www.huaweicloud.com/kunpeng/software/docker.html关键过程截图:centos操作系统使用方式一Ubuntu操作系统使用方式一编译遇到的问题总结:问题1:一开始尝试使用方式二,一直失败,后面使用方式一的方法编译成功,现在知道方式二的方法为什么有问题了(看下面)。现在知道方式二的方法为什么有问题了,当时只下载安装了docker-ce-cli工具,没有安装docker-ce工具(解决方法如下)这两个都要安装,安装docker-ce会自动下载docker-ce-li,但只安装docker-ce-li不会去下载docker-ce,所以如果已经安装了docker-ce-li,执行时提示unit not found,则再补充下载安装docker-ce即可,需要两个工具版本一致(同事验证过了的)说明:以上是个人编译过程遇到的问题,仅供参考
-
## 问题 Docker 是 IBM 规划分析工作区 (PAW) 安装和配置的主要先决条件之一。本贴记录一些可能会遇到与Docker相关的问题,这些问题可能会阻止 PAW 的功能。本贴说明旨在帮助您解决一些常见的Docker问题。 出于本贴目的,提及的所有 Powershell 命令都应从管理员权限的 Powershell 会话运行。 下文是本技术说明采用的故障排除方法的工作流图  问题 1:无法访问浏览器/PAW 服务中的 PAW 相关症状: 1. "规划分析工作区不可用。几分钟后在 Web 浏览器中重试" 2. 在 Web 浏览器中"无法访问此网站" - 确保 Docker 已启动并运行。在dos窗口中键入以下命令,以确保相同: - start-service docker - 此外, 请检查 Windows 服务, 以确保 "Docker 引擎" 处于运行状态 - 在 Powershell 会话中,导航到 PAW 安装目录,然后键入./脚本/paw.ps1 问题 2:管理员退出/无法启动管理图 相关症状: 1.执行 Start.ps1 脚本时,步骤中出现问题'启动 IBM规划分析管理工具'执行失败,退出代码 1" 2. "无法启动服务管理:在网络 nat 上创建终结点管理服务失败:HNS 失败并出错:未找到元素。在 启动项目时遇到错误。执行 Start.ps1 时 - 打开 /日志/admintool/up.log 并查看错误消息 - 如果日志文件错误消息未提及 HNS,则从电源壳会话运行./脚本/paw.ps1 问题 3:运行 ./脚本/paw.ps1 无法重新启动服务/返回 HNS 错误/Windows 筛选器错误/pa 网关错误 相关症状: 1. "Recreating 32bf8925a845_32bf8925a845_32bf8925a845_admintool Error: for Cannot start : hcsshim: PrepareLayer failed in Win32: The handle is invalid. (0x6) layerId= flavour=1" when ./scripts/paw.ps1 is executed 2. "For pa-gateway Cannot start service pa-gateway: failed to create endpoint pa-gateway on network nat: HNS failed" when ./scripts/paw.ps1 is executed 3. "HNS failed with error: The file cannot be opened because it is in the process of being deleted." when ./scripts/paw.ps1 is executed 4. "Cannot start service : failed to create endpoint on network nat: HNS failed with error: The object already exists." when ./scripts/paw.ps1 is executed 5. "Cannot Start service : Container is marked for removal and cannot be started" ./scripts/paw.ps1 is executed. 6. "C:\Program Files\Docker\docker.exe: failed to register layer: re-exec error: exit status 1: output: ProcessUtilityVMImage C:\ProgramData\docker\windowsfilter\\UtilityVM: The process cannot access the file because it is being used by another process" when ./scripts/paw.ps1 is executed - 如果出现 WindowsFilter 错误(#6相关症状),防病毒软件可能会阻止 Windows 容器出现。 建议从供应商那里确认 确实支持 Windows 容器。 如果必须向扫描协议添加排除项,建议使用以下位置: C:\程序数据\docker(或守护进程.json文件中的码头根位置) C:\程序数据\微软\视窗\HNS - 如果 pa 网关未启动,请确保端口 80 上没有运行任何消息。如果端口 80 是开放且没有被占用,并且问题/错误仍然存在,或者其他容器未出现,请尝试下一步,如下所示。 docker container rm ./scripts/paw.ps1 问题 4:HNS 问题 有时,Docker 网络可能会损坏,这是主机网络服务(HNS 发挥作用)的地方 - 可以使用微软网络清理脚本进行清理 -使用以下语法运行脚本: .\WindowsContainerNetworking-LoggingAndCleanupAide.ps1 -Cleanup -ForceDeleteAllSwitches - 如果脚本成功运行,请重新启动计算机,然后从脚本文件夹中运行 paw.ps1 脚本 - 如果它出错,请运行以下命令 docker container run hello-world:nanoserver docker run -p 80:80 hello-world:nanoserver (如果上述任一命令失败,则问题出在 Docker 配置上,因为 hello-world 容器与任何 IBM PAW 服务完全脱节,在这种情况下,建议联系 MS 支持人员解决 Docker 问题。)
-
此篇包含有关如何诊断和排除问题、发送日志上的问题以及查找已知问题的解决方法的信息。 ## 故障排除 (一) 从菜单栏**中选择 >**疑难解答以查看故障排除选项。  "疑难解答"页包含以下选项: - **重新启动 Docker Desktop**:选择以重新启动 Docker Desktop。 - **运行诊断:**选择此选项可诊断 Docker Desktop上的任何问题。有关诊断的详细信息,请参阅[诊断问题、发送反馈和创建 GitHub 问题](https://docs.docker.com/docker-for-windows/troubleshoot/#diagnose-problems-send-feedback-and-create-github-issues)。 - **清理/清除数据**:选择此选项可删除容器和图像数据。选择是删除 Hyper-V、WSL 2 或 Windows 容器中的数据,然后单击"删除**"**以确认。 - **重置为出厂默认值**:选择此选项可将 Docker Desktop上的所有选项重置为初始状态,与首次安装 Docker Desktop 时相同。 ### 应用内诊断 从菜单中选择**>**疑难解答。  当**"诊断和反馈"窗口**启动时,它将开始收集诊断。当诊断程序可用时,您可以上载它们并获取**诊断 ID**,在与 Docker 团队通信时必须提供该 ID。有关个人数据政策的信息,请参阅 Docker文档 [Desktop 中的个人数据处理方式](https://docs.docker.com/docker-for-mac/faqs/#how-is-personal-data-handled-in-docker-desktop)。  ### 从终端内诊断 在*Powershell*中创建和上传诊断,请运行: ``` bach PS C:\> & "C:\Program Files\Docker\Docker\resources\com.docker.diagnose.exe" gather -upload ``` (路径需要根据自己docker的安装路径进行修改) 诊断完成后,应具有以下输出,其中包含诊断 ID: ``` bash Diagnostics Bundle: C:\Users\User\AppData\Local\Temp\CD6CF862-9CBD-4007-9C2F-5FBE0572BBC2\20180720152545.zip Diagnostics ID: CD6CF862-9CBD-4007-9C2F-5FBE0572BBC2/20180720152545 (uploaded) ``` ## 故障排错(二) ### 确保证书设置 Docker Desktop忽略不安全注册表下列出的证书,并且不会向它们发送客户端证书。尝试从注册表提取这样的命令在命令行上生成错误消息,如:`docker run` ``` bash Error response from daemon: Get http://192.168.1.11:5858/v2/: malformed HTTP response "\x15\x03\x01\x00\x02\x02" ``` 以及在注册表上。例如: ``` bash 2020/07/10 8:15:30 http: TLS handshake error from 192.168.1.1:52882: tls: client didn't provide a certificate 2020/07/10 8:15:30 http: TLS handshake error from 192.168.1.1:52883: tls: first record does not look like a TLS handshake2020/07/10 8:15:30 http: TLS handshake error from 192.168.1.139:52882: tls: client didn't provide a certificate 2020/07/10 8:15:30 http: TLS handshake error from 192.168.1.1:52883: tls: first record does not look like a TLS handshake ``` ### 卷 关于共享卷的数据目录上的权限错误,Docker Desktop 将共享卷的权限设置为默认值 0777。`read``write``execute``user``group` 共享卷的默认权限不可配置。如果正在使用在容器运行时需要不同于共享卷默认值的权限的应用程序,则需要使用非主机装载的卷 ### 虚拟化 电脑上必须有以下这些功能,Docker Desktop才可以正常运行 1. Hyper-V安装和运行 2. 在BIOS中启用虚拟化 ### Hyper-V Docker Desktop需要安装并且启用Windows的Hyper-V 模块 在"开始"菜单中,**键入"打开或关闭 Windows 功能",**然后按 Enter。在后续屏幕中,验证 Hyper-V 是否已启用: 
-
【转载华为云社区】华为鲲鹏服务器安装docker-compose前一久天参加了华为举办的云南省大学生自主创新大赛·鲲鹏赛道要求充分理解和认知鲲鹏云服务,且将云服务应用到参赛作品中且解决具体的系统问题华为鲲鹏服务器华为鲲鹏服务器采用华为自研cpu ARMv8架构,提供 Windows 和多个Linux 系统,作为服务器使用我一直使用Centos系统本次使用 CentOS 7.6 64bit with ARMdocker 作为官方的编排工具,是非常重要的,它可以让用户通过编写一个简单的模板文件,快速地创建和管理基于docker容器的应用集群。Compose 定位是“定义和运行多个docker容器的应用”。Compose中有两个重要的概念:项目(project):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。实验了好多次发现:不要用python2来安装docker-compose,得下载python3还有一点,在开始前找到对应的ARM架构的yum源换一个(我已经找到标记好了),因为自带的源安装会有问题得通过备份换源解决1234567891011121314151617181920212223242526272829#!/bin/bash# 更新yummv /etc/yum .repos.d /CentOS-Base .repo /etc/yum .repos.d /CentOS-Base .repo.backupwget http: //mirrors .aliyun.com /repo/Centos-altarch-7 .repo -O /etc/yum .repos.d /CentOS-Base .repoyum makecache# 安装dockercurl -fsSL https: //get .daocloud.io /docker | bash -s docker --mirror Aliyun # 配置dockermkdir -p /etc/docker tee /etc/docker/daemon .json <<- 'EOF'{ "registry-mirrors" : [ "http://*********" ], "log-driver" : "json-file" , "log-opts" : { "max-size" : "50m" , "max-file" : "3" }}EOF systemctl daemon-reloadsystemctl restart docker # docker-composeyum install -y libffi libffi-devel openssl-devel python3 python3-pip python3-devel pip3 install -i https: //pypi .tuna.tsinghua.edu.cn /simple docker-compose查看安装是否成功:1docker-compose - vDocker Compose 常用命令build:构建或者重新构建项目中的服务容器1$ docker-compose build [options] [service...]start: 启动已经存在的服务容器1$ docker-compose start [service...]stop: 停止已经处于运行状态的容器,但不删除它。通过docker-compose start 可以再次启动这些容器。1$ docker-compose stop [options] [service...]up: 它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。链接的服务都将会被自动启动,除非已经处于运行状态。1234567$ docker-compose up [options] [service...] options: -d 在后台运行服务容器 --no-deps 不启动服务所链接的容器 --force-recreate 强制重新创建容器,不能与 --no-recreate同时使用 --no-recreate 如果容器已经存在了,则不重新构建,不能与--force-recreate同时使用rm: 删除所有(停止状态的)服务容器。推荐先执行docker-compose stop 命令来停止容器。12345$ docker-compose rm [options] [service...] options: -f,--force 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。 - v 删除容器所挂载的数据卷。kill:通过发送 SIGKILL 信号来停止指定服务的容器docker-compose kill eureka1$ docker-compose kill eurekascale:设置指定服务运行容器的个数,以 service=num 形式指定1$ docker-compose scale web=5 db=3将启动5个容器运行web服务,3个容器运行db服务。一般情况下,当指定数目多于该服务当前实际运行容器,将新创建并启动容器;反之,将停止容器。
-
错误详情:E: Failed to fetch https://mirrors.huaweicloud.com/docker-ce/linux/debian/dists/buster/stable/binary-amd64/Packages.bz2 File has unexpected size (9412 != 9091). Mirror sync in progress? [IP: 117.78.24.32 443] Hashes of expected file: - Filesize:9091 [weak] - SHA512:856368eea39e820101a9a1af1a189630f1bc45950a17f7a68502e70b2177fc149c0880914a8c0bf30b781149f85bcee065ad6aea3346f38ceedf45a84d0a73f6 - SHA256:fc128ffc7726e7ec86b51f456494cfdcc2a76215d48277bce69efb93cfbc7cc7 - SHA1:7da0823be17b98b0c2cfb58429ec75b463297ae9 [weak] - MD5Sum:09246b3a01975c8aa341dc337b04e097 [weak] Release file created at: Wed, 04 Sep 2019 17:48:09 +0000E: Failed to fetch https://mirrors.huaweicloud.com/debian/dists/buster-backports/main/binary-amd64/Packages.xz File has unexpected size (327848 != 327828). Mirror sync in progress? [IP: 117.78.24.32 443] Hashes of expected file: - Filesize:327828 [weak] - SHA256:88940a101a452988547ad3ada299f306c7e80cdf59290f581dee348380d4c23e Release file created at: Wed, 24 Jun 2020 20:17:56 +0000
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签