Docker基础2

Docker基础操作指南(树莓派5+Ubuntu运行ROS2 docker) 大家经常看到的虚拟机软件包括Docker,VMware,VirtualBox,Parallels Desktop,KVM(Kernel-based Virtual Machine),Hyper-V等等。Docker 是使用了是容器化技术(操作系统级别的虚拟化技术) ,使用非常广泛,其和传统虚拟机软件(如 VMware、VirtualBox、Parallels Desktop等)之间有几个重要的区别。 阅读详情

如需转载,标记出处


本次我们将下载一个 Docker 镜像,从镜像中启动容器

上一章,安装 Docker 时,获得两个主要组件:

  • Docker 客户端

  • Docker 守护进程(有时称为“服务器”或“引擎”)

守护进程实现 Docker Remote API。 在默认的 Linux 安装中,客户端通过位于 /var/run/docker.sock 的本地 IPC/Unix 套接字与守护进程通信。

用 docker version 命令测试客户端和守护进程是否正在运行并可以相互通信

从远处拉取镜像,使用容器

映像包含足够的操作系统 (OS),以及运行其设计的任何应用程序所需的所有代码和依赖项。

从Docker Hub 拉取最新版本的 ubuntu 镜像到本地

将镜像(一般在github上)放到 Docker 主机(本地这边)称为“拉取”。

其实就是下载

docker pull ubuntu:latest

(如果拉取失败是十有八九是没设置 Docker 的代理,看下面第一个问题集)

运行 docker image ls 命令以查看刚刚拉取的映像

docker container run 命令从中启动容器。

docker container run -it ubuntu:latest /bin/bash
root@d08b290c8882:/# 

shell 提示都发生了变化

因为 shell 现在连接了新容器 shell 上

按下 Ctrl-PQ 退出容器

docker container ls查看容器状态

docker container ls
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
db489e5f4d94   ubuntu:latest   "/bin/bash"   40 seconds ago   Up 40 seconds             wizardly_jackson
d08b290c8882   ubuntu:latest   "/bin/bash"   7 minutes ago    Up 7 minutes              festive_shannon

前面步骤中的容器仍在运行,用 docker container exec 命令将 shell 连接到正在运行的容器。

docker container exec -it wizardly_jackson bash

使用 docker container stop 和 docker container rm 命令停止容器/关闭容器

比如:

admin123@admin-virtual-machine:~$ docker container kill wizardly_jackson
wizardly_jackson

从github上拉取到本地,手动构建容器

上面一部分和这部分有区别吗

肯定的

Docker hub是专门的 容器镜像仓库,里面的镜像是 预先构建好的,由官方或社区成员提前创建、打包好并上传,可以直接用

从 Git 仓库克隆一个应用程序,检查其 Dockerfile,容器化,然后将其作为容器运行

git clone https://github.com/nigelpoulton/psweb.git

(如果报错看问题集4)

admin123@admin-virtual-machine:~/learn$ ls
psweb
admin123@admin-virtual-machine:~/learn$ cd psweb
admin123@admin-virtual-machine:~/learn/psweb$ ls
app.js  Dockerfile  package.json  README.md  views

cd 进入目录需要保证 ls 后出现 Dockerfile,Dockerfile 是一个纯文本文档,描述了如何构建 Docker 镜像。 使用 docker image build 命令,按照 Dockerfile 中的说明创建新的映像

admin123@admin-virtual-machine:~/learn/psweb$ cat Dockerfile
# Test web-app to use with Pluralsight courses and Docker Deep Dive book
FROM alpine
​
LABEL maintainer="nigelpoulton@hotmail.com"
​
# Install Node and NPM
RUN apk add --update nodejs npm curl
​
# Copy app to /src
COPY . /src
​
WORKDIR /src
​
# Install dependencies
RUN npm install
​
EXPOSE 8080

根据 Dockerfile 文件构建一个名字叫 test 的镜像

docker image build -t test:latest .

上面的不行换这个

docker buildx build --build-arg http_proxy=http://你的代理ip:端口号\
  --build-arg https_proxy=你的代理ip:端口号 \
  -t test:latest .

使用上一步构建的镜像来启动名字叫web1的容器

 docker container run -d \
  --name web1 \
  -p 8080:8080 \
  test:latest

访问 http://127.0.0.1:8080/

就可以看到

Hello Docker learners!!!
Check out my other books
Quick Start KubernetesThe Kubernetes BookAI Explained

Be careful. The last time I updated the packages in this app was Dec 2024.

BUG报错问题集

1.Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

网络问题,输入ifconfig在ens33这个网卡下面没有看到ipv4地址,说明网卡掉了

sudo ifconfig ens33 down
sudo ifconfig ens33 up

我也不知道为啥虚拟机的网卡掉线是家常便饭,不过我的问题还是没解决又碰到了下面的报错

4.6补充:如果你一直在这边卡着,网络问题也解决了,剩下的问题就是代理问题了,我昨天写到这里排查半天,查了两本教程书籍,不同种拉取镜像的方法都不行,今天除了代理的问题解决的,

我自己的ubuntu虚拟机的代理不知道啥时候也掉线了

1.永久设置代理(如果已经有这一步跳过即可)

编辑 ~/.bashrc 或 ~/.zshrc 文件:

sudo vim  ~/.bashrc

在文件末尾添加:(这个只是 参考我也不知道你用的哪个代理,如果是nat用的是主机的ip,桥接就是ifcomfig查虚拟机自己的ip,端口号看使用的哪个软件用的)

唯一需要注意的是下面不是我打错,没有https://

除了ip和端口号需要根据自身情况改其他的不用

export http_proxy="http://127.0.0.1:xxxx"
export https_proxy="http://127.0.0.1:xxxx"

保存后运行:

source ~/.bashrc

虚拟机的代理配置好,docker的也要配置

配置过程如下:

2.创建docker代理配置文件:

编辑 http-proxy.conf 文件:

sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

在文件中加入代理环境变量:(这里还要细分你的虚拟机时)

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:xxxx/"
Environment="HTTPS_PROXY=http://127.0.0.1:xxxx/"

2.Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded

解决方案

检查 Docker 配置文件中的 --registry-mirror 设置: 如果你希望使用镜像源,可以将该配置项移到 /etc/docker/daemon.json 中,而不是通过命令行启动时设置。这样可以避免与命令行启动参数冲突。

打开 /etc/docker/daemon.json 并添加以下内容:

{
  "registry-mirrors": ["https://mirrors.ustc.edu.cn"]
}

清除命令行中的 --registry-mirror 参数: 修改完 /etc/docker/daemon.json 后,删除或注释掉启动时使用的 --registry-mirror 参数。

你可以编辑 Docker 服务文件来移除这个启动参数:

sudo systemctl edit docker

在打开的编辑器中删除或注释掉 --registry-mirror 参数(如果存在),保存并退出。

重载并重启 Docker 服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

3.*启动docker失败 Active: failed *

按照经验,一般都是在配置文件里面写的参数有问题,把改的东西还原回来再重启就行了

上面的话还是不行,再看下面的一种法子

查看日志:

sudo journalctl -u docker.service -n 50

其中有一句:

unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file.

分析:

错误的根本原因是 /etc/docker/daemon.json 配置文件中有一些选项是重复定义的,既通过配置文件设置,又通过命令行参数传递。这导致了 Docker 启动失败。

把文件中的内容全部删除,日志还是显示说重复了,最初能正常运行的时候这个文件就是空白的。

查看 Docker 服务的启动参数:

ps aux | grep dockerd

我的显示结果是这样的:

admin123@admin-virtual-machine:~$ ps aux | grep dockerd

root 11349 0.1 0.4 1895628 69920 ? Ssl 19:02 0:00 /usr/bin/dockerd --registry-mirror=https://mirrors.ustc.edu.cn
admin123 11613 0.0 0.0 12000 720 pts/0 S+ 19:03 0:00 grep --color=auto dockerd

dockerd 启动时包含了 --registry-mirror=https://mirrors.ustc.edu.cn 参数。这意味着在启动 Docker 时通过命令行显式指定了 --registry-mirror 参数,可能与 daemon.json 文件中的配置发生了冲突。

解决方案:

将该配置项移至 /etc/docker/daemon.json:

{
  "registry-mirrors": ["https://mirrors.ustc.edu.cn"]
}

然后清除命令行中的 --registry-mirror 参数:

sudo systemctl edit docker

删除掉 --registry-mirror 参数,保存并退出。

重新加载 Docker 服务并重启:

sudo systemctl daemon-reload
sudo systemctl restart docker

4.fatal: 无法访问 'https://github.com/nigelpoulton/psweb.git/':Couldn't connect to server

Git 无法连接到 GitHub,最常见原因是 没有正确配置代理

git config --global http.proxy http://127.0.0.1:xxxx

git config --global https.proxy http://127.0.0.1:xxxx

如果还是不行ifconfig看网卡掉线没,这个bug老朋友了,是不是来一下

sudo git clone https://github.com/nigelpoulton/psweb.git
正克隆到 'psweb'...
remote: Enumerating objects: 85, done.
remote: Counting objects: 100% (39/39), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 85 (delta 28), reused 21 (delta 19), pack-reused 46 (from 2)
展开对象中: 100% (85/85), 17.12 KiB | 922.00 KiB/s, 完成.

5. ERROR: failed to solve: process "/bin/sh -c apk add --update nodejs npm curl" did not complete successfully: exit code: 3

Docker打包基础2 如果你使用的是像虚拟环境(virtualenv)或 Conda 环境这样的隔离环境,那么情况与上述类似:你有两个不同版本的 Python,即系统 Python 和隔离环境中的 Python。在某些版本的 Docker 中,你可以访问这个临时镜像,但在新的且大多有所改进的 BuildKit 构建系统中却不行。在理解镜像的构建方式方面很有用,偶尔也能让你了解到不安全的设置,但它最有用的地方是找出镜像过大的原因。命令更有用的工具了。命令都能让你窥探任何镜像的内部结构,让你看到好的、坏的和丑陋的方面。 阅读详情

相关推荐

避坑指南:Spring3集成OpenAPI时泛型响应失效的3种解决方案

本文深入探讨了Spring3集成OpenAPI时泛型响应失效的问题,提供了三种实用解决方案:移除@Schema注解、使用@ArraySchema包装泛型以及自定义Schema处理器。针对不同项目规模,详细分析了各方案的适用场景、优缺点及性能影响,帮助开发者高效生成准确的接口文档,提升前后端协作效率。

weixin_30839881的博客 95

docker启动失败问题记录

今天运行程序的过程中服务器突然终端,重新连接服务器,连接容器时出现报错: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 百度时发现有人说是docker服务没开 开启docker服务 于是按照高赞答案开启docker,仍旧没用,报错: Job for...

liuyingying0418的博客 2万+

PL/SQL 中的数据导入和导出:CSV 文件格式详解

在 PL/SQL 开发中,数据的导入和导出是常见的操作。本文将深入探讨如何使用 PL/SQL 导入和导出 CSV 文件格式的数据,帮助你轻松地实现数据迁移、备份和数据交换等需求。CSV(Comma-Separated Values)是一种常见的文本文件格式,它以逗号作为字段的分隔符,每行表示一个记录。使用 CSV 格式可以方便地在不同的系统之间共享和传输数据。下面我们将分步介绍如何在 PL/SQL 中导入和导出 CSV 文件格式的数据。

pleaseprintf的博客 8828

解决Docker启动报错问题:Active: failed (Result: start-limit-hit) since Sat 2024-04-06 22:56:48 CST; 4s ago

解决Docker启动报错问题:Active: failed (Result: start-limit-hit) since Sat 2024-04-06 22:56:48 CST; 4s ago ,首先在/etc/docker目录下修改daemon.json文件。今天在安装完docker后发现一个问题,运行。内容如下,没有这个文件路径就自己建一个。然后将改文件名改为 .com 结尾。我真N13,完美解决!

m0_63698401的博客 5630

反激电源占空比为何必须小于0.5?次谐波振荡与斜坡补偿详解

在开关电源设计中,峰值电流模式控制因其优异的动态响应和逐周期限流保护而被广泛应用。其工作原理是通过采样电感电流的峰值,与误差电压比较来控制开关管的导通与关断。然而,这种控制方式在反激等隔离拓扑中,当占空比超过50%时,会面临一个固有的稳定性挑战——次谐波振荡。这是由于电流扰动会在相邻开关周期内被放大而非衰减,导致系统在开关频率一半处发生振荡,严重影响输出纹波和可靠性。为解决这一问题,工程上引入了斜坡补偿技术,通过向控制信号叠加一个固定斜率的斜坡,改变环路增益条件,从而在宽输入电压或高占空比需求下维持系统稳定

weixin_29631169的博客 609

保姆级教程:用OpenCV搞定鱼眼双目相机的标定与测距(附完整C++代码)

本文详细介绍了使用OpenCV进行鱼眼双目相机标定与测距的全流程,包括环境搭建、数据采集、单目标定、双目标定、立体校正和视差计算等核心步骤。通过完整的C++代码示例和参数调优指南,帮助开发者快速实现高精度的双目测距系统,适用于机器人导航、VR全景拍摄等领域。

weixin_42573113的博客 381

Docker无法启动异常解决

Docker无法启动异常 错误信息: [root@localhost ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset...

以梦为马,不负韶华 2508

手把手教你学simulink(24.4)--Simulink在机器人视觉场景下的应用——基于视觉的物体跟踪与抓取

该系统集成了图像处理、目标检测、运动估计、路径规划、抓取控制和视觉反馈等多个功能模块,能够实现实时处理视觉数据、检测并跟踪移动物体、规划最优路径并控制机械臂进行精确抓取。本项目的目标是使用Simulink和MATLAB设计一个基于视觉的物体跟踪与抓取系统,该系统能够实时处理图像数据,检测并跟踪移动物体,规划最优的抓取路径,并控制机械臂进行精确抓取。为了验证系统的性能,我们在Simulink中搭建了基于视觉的物体跟踪与抓取系统的仿真模型。

MHD0815的博客 251

WSL2 Centos7 Docker服务启动失败的探索

WSL2 Centos7 Docker服务启动报错解决

sfdasdfa的博客 3805

【2026华为OD新规机考】最新套题持续更新【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】

可上练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)

weixin_48157259的博客 498

SpringBoot项目搭建

SpringBoot项目搭建

私信可回答各种问题~ 1004

docker 初次安装及报错排查

安装 Docker 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。 Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。 本文介绍 Docker CE 的安装使用。 移除旧的版本: $ sudo yum remove docker \ ...

sinat_41780498的博客 1419

2024年09月CCF-GESP编程能力等级认证Scratch图形化编程二级真题解析

小杨购物 【题目描述】 小杨有n元钱用于购物。商品A的单价是a元,商品B的单价是b元。 小杨想购买相同数量的商品A和商品B。 默认小猫角色和白色背景,编写程序请你帮小杨计算出他最多能够购买多少个商品A和商品B。 【输入描述】 新建变量“n”用于存储小杨购物的金额。 新建变量“a”用于存储商品A的价格。 新建变量“b”用于存储商品B的价格。 1≤n,a,b≤100000 如下图所示: 图片 【输出描述】 新建变量“result”用于存储小杨最多购买商品A和商品B的个数。 如下图所示:

人生就是一个不断学习的过程 487

【DOCKER】-2 docker基础

docker基础

ordinary的博客 2385

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

docker基础2

Docker是个什么东西 Docker是一个程序运行、测试、交付的开放平台,Docker被设计为能够使你快速地交付应用。 在Docker中,你可以将你的程序分为不同的基础部分,对于每一个基础部分都可以当做一个应用程序来管理。 Docker能够帮助你快速地测试、快速地编码、快速地交付,并且缩短你从编码到运行应用的周期。 Docker使用轻量级的容器虚拟化平台,并且结合工作流...

weixin_34008933的博客 250

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Docker学习(2)——Docker基础命令的讲解

记住:容器是基于镜像的,就像虚拟机也是基于镜像一样的 1.常用的Docker基础命令总结 命令格式 作用 docker load -i ubuntu.tar 导入镜像(以ubuntu镜像为模板) docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为模板) docker ps 查看容器状态,当前活跃的 docker ps -a ...

ymeng9527的博客 634

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Docker教程(2)—Docker常用基础命令

Docker常用命令 帮助命令 1.显示docker的版本信息: docker version 2.显示docker的系统信息 docker info 3.帮助命令 docker 命令 --help 例如: docker info --help 镜像命令 1.查看所有本地主机上的镜像 docker images 2.搜索镜像 我们可以在Docker Hub网站上来搜索镜像,网址为:https://hub.docker.com/,也可以使用docker s...

AlbertYang的博客 4580

Docker 学习2 Docker基础用法

一、docker架构      无论是C端还是S端都由docker一个程序提供,这个程序有很多子程序,其中有一个子程序的子命令叫daemon,表示运行为守护进程,因此我们运行docker daemon就表示把这台主机变为守护进程服务器,它可以监听在所谓的套接字之上,为了安全起见默认只提供本机的unix socket 文件套接字,   1、client端   2、server端,docker...

weixin_30492047的博客 112

docker 基础 2

一.将容器制作成新的镜像 (1)描述 docker commit :从容器创建一个新的镜像。 (2)语法

lqh_linux的博客 263

docker基础用法-2

docker基础用法

阿干tkl的博客 1028

Docker——2. Docker基础

docker基础

qq_45681515的博客 432

Docker基础(2)—— Docker安装及基础操作

Docker基础(1)—— Docker基本概念 Docker基础(2)—— Docker安装及基础操作 二、环境配置 1、下载安装 macOS安装Docker还是比较简单的。下载 Stable 或 Edge 版本的 Docker for Mac,安装。 也可以使用Homebrew安装:$ brew cask install docker 。 Windows用户可以参考教程。 2、运行 点击Do...

huangbaoling66的博客 333

2、Docker基础用法

容器镜像:https://hub.docker.com/ Docker架构图:https://ruby-china.org/topics/22004 Docker使用客户端-服务器(client-server)架构模式。Docker客户端会与Docker守护进程进行通信。Docker守护进程会处理复杂繁重的任务,例如建立、运行、发布你的Docker容器。 Docker客户端和守护进程...

weixin_30810583的博客 615

2. Docker基础

Docker深入演示例子为了加深大家对docker技术中的三大概念的理解,我再演示一个例子:拉取tomcat镜像,并部署web应用,并且运行。docker search tomcat 在仓库中搜索tomcat镜像,部分截图如下:docker pull tomcat 拉取tomcat镜像这里为什么tomcat镜像的大小有52...

qt1360726014的博客 607

Docker实战教程 第2章 Docker基础

虚拟化,容器Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker的应用场景,Web 应用的自动化打包和发布。

此博客内容主要是小可日常工作中的一些问题解决的记录整理而成 1142

docker(2)——docker的基础命令

记住:容器是基于镜像的,就像虚拟机也是基于镜像一样的 1.常用的Docker基础命令总结 docker命令 具体解释 docker load -i ubuntu.tar 导入镜像(以ubuntu镜像为模板)【本地就有该镜像】 docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为模板),新的容器叫vm1 docker ps 查看正...

qq_42024433的博客 345
上一篇: Docker基础1
下一篇: 悲观锁与乐观锁
shenmu84
博客等级 码龄2年 314粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值