docker
  • docker教程
  • advanced
    • Docker 构建缓存指南
    • Docker分配CPU资源
    • Dockerfile+Maven插件构建SpringBoot镜像(推荐)
    • Dockerfile构建SpringBoot镜像
    • idea配置docker
    • Docker Jenkins进阶配置
    • 基于jenkins容器部署SpringBoot应用构建镜像(基于Dockerfile+Maven插件构建)
    • Maven插件构建SpringBoot镜像(二)
    • 基于Maven插件为SpringBoot应用构建镜像并推送到远程_私人仓库(Docker Hub)
    • Maven插件构建SpringBoot镜像(一)
    • Docker MongoDB进阶配置
    • Docker 多阶段构建指南
    • Docker MySql进阶配置
    • Docker network进阶配置
    • Docker Nginx进阶配置
    • Docker空(none)镜像处理
    • Docker pip install --no-cache-dir
    • Docker redis进阶配置
  • concepts
    • docker、docker engine和docker desktop区别
    • 架构
    • 什么是容器?
    • 什么是镜像?
    • 什么是Docker?
    • 什么是仓库?
  • docker-compose
    • Docker Compose 锚点的用法
    • docker-compose 编排多服务
    • docker-compose 常用命令
    • docker-compose 部署jenkins
    • docker-compose安装mySql
    • docker-compose网络配置
    • docker-compose安装nginx
    • docker-compose安装redis
    • docker Compose 示例1
  • docker-hub
    • Docker Hub账号服务说明
  • install
    • CentOS Docker 安装
    • Debian Docker 安装
    • Docker 安装 Apache
    • Docker 安装 CentOS
    • Docker 安装 Elasticsearch
    • Docker 安装 GitLab
    • Docker 安装 Jenkins
    • Docker 安装 MongoDB
    • Docker 安装 MySQL
    • Docker 安装 Nginx
    • Docker 安装 Node.js
    • Docker 安装 PHP
    • Docker 安装 Portainer
    • Docker Python 官方镜像使用说明(TAG说明)
    • Docker 安装 Python
    • Docker 安装 Redis
    • Docker 安装 Tomcat
    • Docker 安装 Ubuntu
    • Docker 安装 Wordpress
    • Docker 国内镜像加速
    • MacOS Docker 安装
    • Ubuntu Docker 安装
    • Windows Docker 安装
  • manual
    • Docker attach 命令
    • Docker build 命令
    • Docker 清理命令
    • Docker命令大全
    • Docker commit 命令
    • docker-compose-run-command
    • Docker cp 命令
    • Docker create 命令
    • Docker diff 命令
    • Docker rm 命令
    • Docker exec 命令
    • Docker export 命令
    • Docker history 命令
    • Docker images 命令
    • Docker import 命令
    • Docker info 命令
    • Docker inspect 命令
    • Docker kill 命令
    • Docker load 命令
    • Docker login/logout 命令
    • Docker logs 命令
    • Docker network 命令
    • Docker pause/unpause 命令
    • Docker port 命令
    • Docker 常见问题
    • Docker ps 命令
    • Docker pull 命令
    • Docker push 命令
    • Docker rename 命令
    • docker-resources
    • Docker rm 命令
    • Docker rm 命令
    • Docker run 命令
    • Docker save 命令
    • Docker search 命令
    • Docker start/stop/restart 命令
    • Docker stats 命令
    • Docker tag 命令
    • Docker top 命令
    • Docker version 命令
    • Docker version 命令
    • Docker wait 命令
    • diff
      • Docker Compose 和 docker-compose 区别
      • Docker import、export 与 save、load 命令 区别
  • usage
    • Docker docker-compose 使用
    • Docker 容器连接
    • Docker 容器使用
    • Docker Dockerfile Ptyhon实战配置-1
    • Docker Dockerfile Ptyhon实战配置之多阶段构建-2
    • Docker Dockerfile
    • Docker 镜像使用
    • Docker Machine
    • Docker 仓库管理
    • Swarm集群管理
  • assets
    • mysql
      • my.cnf
Powered by GitBook
On this page
  • docker启动容器之后马上又自动关闭解决办法
  • 问题描述
  • 退出原因
  • OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file
  • 问题描述
  • 解决方案
  • 分析
  • ERROR: failed to solve: node:xx-alpine解决办法
  • ERROR: failed to copy: httpReadSeeker: failed open: unexpected status code
  • Windows 桌面Docker 执行 sudo systemctl enable docker 报错 Failed to enable unit: Interactive authentication required.

Was this helpful?

  1. manual

Docker 常见问题

PreviousDocker port 命令NextDocker ps 命令

Last updated 29 days ago

Was this helpful?

docker启动容器之后马上又自动关闭解决办法

问题描述

centos 启动一个容器添加了-d 参数,但是 ps 或者docker ps -a查看却已经退出了

shell>docker run -d centos
a44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547
shell>docker ps

退出原因

1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出 2、容器运行的命令如果不是那些一直的命令( 运行top,tail、循环等),就是会自动退出 3、这个是 docker 的机制问题

方案1:起一个死循环进程,让他不停的循环下去,前台永远有进程执行,那么容器就不会退出了,以centos为例

shell>docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"

缺点: 命令太冗长了,还占用一个终端

方案2(推荐):添加-it 参数交互运行、加-d 参数后台运行

shell>docker run -dit centos /bin/bash

原文链接:https://blog.csdn.net/m0_67393342/article/details/124171304

OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file

问题描述

执行进入容器命令时,报如下错误

[root@bogon ~]# docker exec -it 05608860479e /bin/bash
OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file                                or directory: unknown

解决方案

将 /bin/bash 换成 /bin/sh成功 ,执行成功

[root@bogon ~]# docker exec -it 05608860479e /bin/sh
/code #

分析

制作镜像时使用了精简版,只装了sh命令,未安装bash。 如下都是精简版:

FROM redis:alpine 
FROM python:3.6-alpine

参考:https://blog.csdn.net/qq_35764295/article/details/126379879 (更多的sh和bash区别之间的扩展)

ERROR: failed to solve: node:xx-alpine解决办法

🧩 问题原因 ERROR: failed to solve: node:20-alpine: failed to resolve source metadata for docker.io/library/node:20-alpine: docker.io/library/node:20-alpine: not found

✅ 解决方式

改成手动拉取的方式

docker pull node:20-alpine

ERROR: failed to copy: httpReadSeeker: failed open: unexpected status code

🧩 问题原因 这个错误提示通常在尝试从网络下载或读取文件时遇到,表示服务器返回了一个非预期的状态代码,这意味着请求没有成功完成。

✅ 解决方式,更换镜像源地址

Windows 桌面Docker 执行 sudo systemctl enable docker 报错 Failed to enable unit: Interactive authentication required.

🧩 原因分析systemctl 是 Linux 系统中用于管理服务的命令,依赖于 systemd 初始化系统。而在 Windows 上,Docker Desktop 并不使用 systemd 来管理 Docker 服务,因此不会存在 docker.service 单元。

此外,即使在 Windows 上的 WSL(Windows Subsystem for Linux)环境中,由于 WSL 默认不支持 systemd,运行 systemctl 相关命令也会出现类似错误。

✅ 选项一: 在 Windows 11 上,将必要的命令添加到[boot],以下部分/etc/wsl.conf:

[boot]
command="service docker start"

[!CAUTION] 注意: 在最新的预览版中,似乎存在一个问题,当通过实际命令行启动的服务均未运行时,通过此方法启动的任何boot.command服务都会终止。 换句话说,如果您需要解决方式:手动修改C:\Users\Administrator\.docker\daemon.json改为正确的json语法,重启Docker Desktop 应用程序即可 在退出 WSL2 会话后继续运行 Docker(或任何其他服务),则可能需要使用选项 2(或卸载预览版)。

✅ 选项二(推荐)

在 Windows 10 上,在用户启动脚本中运行必要的命令(例如.profile)。首先检查服务是否正在运行,例如:

wsl.exe -u root -e sh -c "service docker status || service docker start"

[!CAUTION] 注意: 这比(下面的选项三)更好,因为它不需要修改。这利用了可以从 WSL 内部运行命令sudoers的优势,使用无需密码即可以 root 身份运行命令的选项。 wsl.exe-u root 如果此命令由于某种原因失败,您的默认 WSL 发行版可能与预期不同。请检查 的输出wsl.exe -l -v。 您可以使用 更改默认发行版,wsl.exe --setdefault <distro_name>或者使用 调整上面的命令行以指定发行版-d <distro_name>。

✅ 选项三(旧答案,供后人参考)

visudo或添加规则以/etc/sudoers.d允许您的用户无需密码即可运行命令:

username ALL = (root) NOPASSWD: /usr/sbin/service docker *

然后编辑您的.profile以添加:

sudo service docker status || sudo service docker start

✅ 选项四(推荐)

在 Windows 上使用 Docker Desktop 时,您可以通过以下方式管理 Docker:

  • 使用 Docker Desktop 应用程序:通过图形界面启动和停止 Docker 服务。

  • 命令行工具:使用 docker 命令行工具执行相关操作,例如:

    docker info
    docker run hello-world

如果您在 WSL 环境中使用 Docker,可以通过以下方式确保 Docker 正常运行:

  1. 确保 Docker Desktop 已启动:在 Windows 中启动 Docker Desktop 应用程序。

  2. 配置 WSL 与 Docker 的集成:在 Docker Desktop 的设置中,启用与 WSL 的集成。

  3. 在 WSL 中使用 Docker 命令:在 WSL 的终端中,直接使用 docker 命令,无需使用 systemctl。

💡 总结

在 Windows 上使用 Docker Desktop 时,不需要也无法使用 systemctl 来管理 Docker 服务。建议通过 Docker Desktop 提供的图形界面或命令行工具来管理和使用 Docker。

参考来源:

docker
挂起
https://stackoverflow.com/questions/65813979/sudo-systemctl-enable-docker-not-available-automatically-run-docker-at-boot-o?utm_source=chatgpt.com