一、使用

1、docker run -it 命令中的 it 参数是什么含义

在Docker中,-it是两个选项的组合,用于在交互式模式下运行容器。让我解释一下它们的含义:

  • -i 或 --interactive:这个选项表示要进入容器的交互式模式。它允许您与容器的标准输入(stdin)进行交互,这样您可以输入命令、与容器中运行的应用程序进行交互等。
  • -t 或 --tty:这个选项分配一个伪终端(pseudo-TTY)设备给容器。伪终端允许模拟终端的交互性,使得您可以像在本地终端一样与容器进行交互,例如,使用箭头键、Ctrl+C 来中断进程等。

当您在容器中执行docker run -it命令时,Docker会创建一个交互式的终端会话,使您可以直接与容器内的命令行界面互动。这在需要手动控制容器、调试或执行需要用户输入的任务时非常有用。
小结:-it 的含义是“保持 STDIN 打开状态,并且分配一个虚拟的终端(Terminal)”。您可以简单理解为,我们通过 SSH 登录到了容器内部,在当前终端下运行的所有命令都是基于容器内的。

2、镜像和容器这两个概念

通俗地说,镜像是一个同时包含业务应用和运行环境的“系统安装包”,它需要运行起来之后才能提供服务,运行后镜像的“实例化”称为容器(Container)。你可以对同一个镜像实例化多次,产生多个独立的容器,这些容器拥有不同的容器 ID,不同的容器之间是相互隔离的。

进一步理解,你可以把容器比喻为虚拟机,虚拟机也是,彼此之间的数据和状态都是隔离的,但是要注意容器和虚拟机有本质上的区别,那就是容器和宿主机是共享同一个内核的

3、Dockerfile COPY 和 ADD 指令有什么区别

COPY 和 ADD 是两个常用于 Dockerfile 中的指令,用于将文件从主机复制到容器中,但它们有一些区别:
(1)COPY 指令:

  • COPY 主要用于复制本地主机上的文件或目录到容器中。
  • 它的语法通常为 COPY <源路径> <目标路径>,其中源路径可以是本地主机上的文件或目录,目标路径是容器中的目标位置。
  • COPY 只进行简单的文件复制操作,不会自动解压缩文件,也不会从 URL 下载文件。

(2)ADD 指令:

  • ADD 不仅可以复制本地主机上的文件或目录到容器中,还可以从 URL 下载文件并复制到容器中,并且它会自动解压缩压缩文件(如 tar、gzip、bzip2 等)。
  • 它的语法为 ADD <源路径> <目标路径>,和 COPY 类似。
  • ADD 功能更强大,但也因此更复杂,如果只需要简单地将本地文件复制到容器中,通常建议使用 COPY。

  ADD指令示例:

# 使用ADD从URL下载文件并复制到容器中
ADD https://example.com/file.tar.gz /app/

总的来说,COPY 用于简单的文件复制操作,而 ADD 则具备更多功能,包括文件复制、自动解压缩和从 URL 下载等。在选择使用时,应根据具体需求来决定使用哪个指令。如果只需要进行文件复制操作,推荐使用 COPY,以保持 Dockerfile 的简洁性。

4、Dockerfile CMD 和 ENTRYPOINT 指令有什么区别

详情参见《Dockerfile 中的 CMD 与 ENTRYPOINT》这篇博文。

二、常见问题

1、Error starting daemon: error initializing graphdriver: driver not supported

安装并启动docker服务时, 报了如上的错误。找到了个解决方案:

# rm -rf /var/lib/docker/*
# systemctl start docker.service

2、docker push到harbor私库中报unknown blob错误

本地构建好镜像推送到私库,私库配置了域名,并使用https协议进行访问。

执行docker push到harbor私库中时报unknown blob错误。

# docker push xxxx/library/tomcat:latest
The push refers to repository [xxx/library/tomcat]
e52576dc1f49: Pushing [==================================================>] 3.584kB
ffdb94571df7: Pushing [==================================================>] 372.7kB
47fc804728ff: Pushing [> ] 545.3kB/80.14MB
dab4e68f20a2: Pushing [==================================================>] 6.144kB
6435966ee18f: Pushing [==================================================>] 4.096kB
b1c057a951b8: Waiting
df654d36e69e: Waiting
77b174a6a187: Waiting
unknown blob

解决方案:

原本nginx harbor域名配置:

proxy_redirect http:// $scheme://;

将上面那行nginx配置命令改成下面这种形式即可解决推送镜像报unknown blob错误问题。

proxy_redirect http:// https://;

Docker 使用及常见问题总结的更多相关文章

  1. 字节跳动内部微服务架构-Docker实战学习笔记分享 真香

    前言 基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud ...

  2. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态?

    https://alibaba.github.io/arthas/ Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决 ...

  3. Arthas Alibaba 开源 Java 诊断工具

    Arthas 用户文档 English Docs Arthas(阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,A ...

  4. activemq消息队列的使用及应用docker部署常见问题及注意事项

    activemq消息队列的使用及应用docker部署常见问题及注意事项 docker用https://hub.docker.com/r/rmohr/activemq/配置在/data/docker/a ...

  5. docker 常用命令 以及常见问题

    常见命令 windos 在搜索框 输入 windows powershell,打开.然后输入以下命令#查看镜像列表 docker images ls #删除单个镜像 docker rmi image- ...

  6. Docker 类面试题(常见问题)

    Docker 常见问题汇总   镜像相关 1.如何批量清理临时镜像文件? 可以使用sudo docker rmi $(sudo docker images -q -f danging=true)命令 ...

  7. 在Ubuntu上安装docker常见问题

    安装完docker之后,发现docker是装好了,但是运行docker就会报“Segmentation Fault or Critical Error encountered. Dumping cor ...

  8. docker和kubernetes中hostname的使用和常见问题

    hostname在docker中是使用UTS namespace进行隔离的.docker中主要有两种ns的用法, 一种是docker run --uts="" busybox.这种 ...

  9. Docker常见问题

    问题 当我使用docke search mysql时,显示如下错误: [root@iZ25u61v97hZ opt]# docker search redis Segmentation Fault o ...

  10. Docker部署常见问题

    一.删除容器和镜像 在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器(哪怕是已经停止的容器),否则无法删除该镜像. 停止容器 # docker stop $(docker ps ...

随机推荐

  1. Redis系列之——Redis介绍安装配置

    文章目录 第一章 redis初识 1.1 Redis是什么 1.2 Redis特性(8个) 1.3 Redis单机安装 1.3.1下载安装 1.3.2三种启动方式 1.3.2.1 最简启动 1.3.2 ...

  2. 11G RAC 11.2.0.1.0实例evict故障处理

    Aix 7.1 参考文档: https://blogs.oracle.com/database4cn/rac Resolving ORA-481 and "terminating the i ...

  3. Kubernetes集群管理面板的安装及使用

    Kubernetes集群管理面板的安装及使用 1.前言 若海的腾讯云Lighthouse组建跨地域Kubernetes集群,让我成功体验到了Kubernetes集群诸多优点,但是非技术出生的我,长时间 ...

  4. 探究——C# .net 代码混淆/加壳

    背景: 保密. 过程: 先查询一下常见的加壳工具: DotFuscator,官方自带,据说免费版混淆程度不高 Virbox Protector,很好很优秀,但是收费 NET Reactor,可能会被识 ...

  5. 浅谈Python异步编程

    1. 异步编程概述 异步编程是一种编程范式,用于处理那些需要等待I/O操作完成或者耗时任务的情况.在传统的同步编程中,代码会按照顺序逐行执行,直到遇到一个耗时操作,它会阻塞程序的执行直到操作完成.这种 ...

  6. 后缀数组 (SA) 学习笔记

    写得很草率的一篇东西. 后缀排序 #include<bits/stdc++.h> #define il inline using namespace std; il int read() ...

  7. C++基础杂记(3)

    类的继承 基类与派生类之间的构造行为 在派生类中使用基类方法 protected 的访问权限 多态公有继承 关键字 virtual 示例 抽象基类(ABC) 私有继承和保护继承 多重继承 类的继承 基 ...

  8. DNS 服务 docker-bind 的部署使用

    前言 前面使用 nginx 代理转发了几个域名到服务器,但是每次添加一个域名都需要在客户端添加一行 hosts 文件,无疑是繁琐的,其中也提到可以使用 DNS 来实现自动解析域名 到指定服务器的功能, ...

  9. IoC容器趣谈

    今天我们来谈谈Spring的内核之一--IoC容器 大家可能会有这样的疑问: "这玩意为啥要叫容器呢?好奇怪" "容器不是装东西的吗?难道IoC容器也是用来装什么东西的? ...

  10. WPF --- 如何重写WPF原生控件样式

    引言 上一篇中 WPF --- 重写DataGrid样式,因新产品UI需要,重写了一下微软 WPF 原生的 DataGrid 的样式,包含如下内容: 基础设置,一些基本背景色,字体颜色等. 滚动条样式 ...