【Docker学习】docker start深入研究

2024-05-03 16:36

本文主要是介绍【Docker学习】docker start深入研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

docker start也是很简单的命令。但因为有了几个选项,又变得复杂,而且...

命令:

docker container start

描述:

启动一个或多个已停止的容器。

用法:

docker container start [OPTIONS] CONTAINER [CONTAINER...]

别名:

docker start(docker的一些命令可以简写,docker start就等同于docker container start)

选项:

选项描述备注
-a, --attach附加到标准输出(STDOUT)/标准错误(STDERR),并转发信号
--checkpoint从这个检查点恢复试验性质(守护进程)
--checkpoint-dir使用自定义的检查点存储目录试验性质(守护进程)
--detach-keys覆盖用于分离容器的键序列
-i, --interactive附加到标准输入(STDIN)

示例1:docker start

如图所示,我有两个退出状态的容器,现在打算重新启动。执行指令:

docker start data-wordpress-1 data-db-1

结果如下。data-wordpress-1和data-db-1全部启动。

示例2:选项--attach

终端A在正常启动命令中加入--attach(-a)选项

docker start -a data-wordpress-1 data-db-1
you cannot start and attach multiple containers at once

结果出现错误,也就是说,使用--attach选项,只能用于一个容器。这次只启动一个wordpress

docker start -a data-wordpress-1

可以看出,终端A给出wordpress的标准输出(STDOUT)和标准错误(STDERR)内容。

这时,我们打开另一个终端B,使用curl访问这个容器。

curl localhost:8080

可以看到终端A中输出了内容,响应了终端B的访问。

示例3:选项--checkpoint、--checkpoint-dir

这是一个试验性质的功能,未来充满不确定性。这里不做具体展开。使用该功能,还需要安装criu。请看上一篇:【Docker学习】docker checkpoint 简单了解

用法:

docker start --checkpoint CHECKPOINT_ID --checkpoint-dir DIR [OTHER OPTIONS] CONTAINER

示例4:选项--detach-keys

使用这个选项覆盖Docker的分离键序列。这在你使用的Docker默认键序列与其他应用程序发生冲突时非常有用。

要为单个容器覆盖序列,就可以使用选项--detach-keys。格式要么是一个字母[a-Z],或者是与以下任何一个结合ctrl-:

  • a-z:单个小写字母字符

  • @:@符号

  • [:左中括号

  • \\:两个反斜杠

  • _:下划线

  • ^:^符号

失败的操作,但正确的使用。

docker start --attach --detach-keys="ctrl-x" my-redis

以上命令计划使用docker start启动my-redis,并附加到标准输出和标准错误上,并设置ctrl-x来退出这种模式,并且不停止my-redis。

经过测试,结果如下:

快捷键不起作用。网上看了不少文章,说默认要使用ctrl-p、ctrl-q来使用,但是也没成功。

最终只能通过ctrl-c强行停止容器。

目前使用一种方法可以解决这一问题,就是用到docker attach的--sig-proxy选项。

docker start my-redis
docker attach --sig-proxy=false my-redis

这样ctrl-c可以退出标准输出,进入命令提示符。不过,这样attach到my-redis又看不到任何标准输出。不知道是不是只有特定的容器才会起作用。

我又尝试使用官网的例子

docker run -dit --name my-alpine alpine top -b
docker attach my-alpine

可以看到结果正常显示标准输出。

又因为使用了-i和-t选项,这次相继按下ctrl-p,ctrl-q,程序也能正常退出到命令模式,并且没有关闭my-alpine。

因为docker start只有-i,没有-t,所以是不支持分离键序列。但官网给出了这个选项,又没有测试用例,不知道是没有考虑到,还是有bug。

若是网友对这块比较熟悉,欢迎跟我讨论,不胜感激!

这篇关于【Docker学习】docker start深入研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957167

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p