docker login失败:err: exit status 1, Try “pass init“

当尝试使用Docker推送新镜像并登录时遇到'passnotinitialized'错误,可以通过以下步骤解决:1) 下载并安装docker-credential-pass;2) 设置环境变量;3) 安装gpg和pass,生成gpg密钥;4) 使用密钥初始化pass;5) 在~/.docker/config.json中配置credsStore为'pass'。完成这些步骤后,重新docker login即可正常进行。

要docker push新镜像时,首先要login,
但是login时输入完password后出现如下错误:

Error saving credentials: error storing credentials - err: exit status 1, out: error storing credentials - err: exit status 1, out: pass not initialized: exit status 1: Error: password store is empty. Try “pass init”.``

解决方法:

  1. 下载docker-credential-pass 下载地址

  2. tar -xvf docker-credential-pass-v0.6.4-amd64.tar.gz

  3. chmod u+x docker-credential-pass

  4. mv docker-credential-pass /usr/bin/.

  5. 设置docker-credential-pass

5.1) install gpg and pass (apt-get install gpg pass)

5.2) gpg --generate-key, 要填入姓名邮箱等信息. 输入新的password之后会产生一个rsa key,如下:

pub rsa3072 2018-10-07 [SC] [expires: 2020-10-06]
1234567890ABCDEF1234567890ABCDEF12345678

在python中右键运行没有问题,使用pytest报错:================================================================================= test session starts ================================================================================= platform darwin -- Python 3.11.7, pytest-7.4.0, pluggy-1.0.0 rootdir: /Users/wxh/Downloads/web_1/web configfile: pytest.ini plugins: allure-pytest-2.15.0, ordering-0.6, anyio-4.2.0 collected 1 item test_case.py E [100%] ======================================================================================= ERRORS ======================================================================================== ______________________________________________________________________ ERROR at setup of TestCase.test_01_login _______________________________________________________________________ self = <selenium.webdriver.chrome.service.Service object at 0x10e96d350> def start(self): """ Starts the Service. :Exceptions: - WebDriverException : Raised either when it can't start the service or when it can't connect to the service """ try: cmd = [self.path] cmd.extend(self.command_line_args()) > self.process = subprocess.Popen(cmd, env=self.env, close_fds=system() != 'Windows', stdout=self.log_file, stderr=self.log_file, stdin=PIPE, creationflags=self.creationflags) /opt/anaconda3/lib/python3.11/site-packages/selenium/webdriver/common/service.py:71: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /opt/anaconda3/lib/python3.11/subprocess.py:1026: in __init__ self._execute_child(args, executable, preexec_fn, close_fds, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Popen: returncode: 255 args: ['chromedriver', '--port=52672']>, args = ['chromedriver', '--port=52672'], executable = b'chromedriver', preexec_fn = None, close_fds = True pass_fds = (), cwd = None env = environ({'COMMAND_MODE': 'unix2003', 'TERM_SESSION_ID': 'e80b991f-3fcd-4888-8591-33dd727075ca', 'LC_CTYPE': 'UTF-8', '...s', '_': '/opt/anaconda3/bin/pytest', 'PYTEST_CURRENT_TEST': 'web_test/test_case.py::TestCase::test_01_login (setup)'}) startupinfo = None, creationflags = 0, shell = False, p2cread = 11, p2cwrite = 12, c2pread = -1, c2pwrite = 13, errread = -1, errwrite = 13, restore_signals = True, gid = None gids = None, uid = None, umask = -1, start_new_session = False, process_group = -1 def _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group): """Execute program (POSIX version)""" if isinstance(args, (str, bytes)): args = [args] elif isinstance(args, os.PathLike): if shell: raise TypeError('path-like args is not allowed when ' 'shell is true') args = [args] else: args = list(args) if shell: # On Android the default shell is at '/system/bin/sh'. unix_shell = ('/system/bin/sh' if hasattr(sys, 'getandroidapilevel') else '/bin/sh') args = [unix_shell, "-c"] + args if executable: args[0] = executable if executable is None: executable = args[0] sys.audit("subprocess.Popen", executable, args, cwd, env) if (_USE_POSIX_SPAWN and os.path.dirname(executable) and preexec_fn is None and not close_fds and not pass_fds and cwd is None and (p2cread == -1 or p2cread > 2) and (c2pwrite == -1 or c2pwrite > 2) and (errwrite == -1 or errwrite > 2) and not start_new_session and process_group == -1 and gid is None and gids is None and uid is None and umask < 0): self._posix_spawn(args, executable, env, restore_signals, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) return orig_executable = executable # For transferring possible exec failure from child to parent. # Data format: "exception name:hex errno:description" # Pickle is not used; it is complex and involves memory allocation. errpipe_read, errpipe_write = os.pipe() # errpipe_write must not be in the standard io 0, 1, or 2 fd range. low_fds_to_close = [] while errpipe_write < 3: low_fds_to_close.append(errpipe_write) errpipe_write = os.dup(errpipe_write) for low_fd in low_fds_to_close: os.close(low_fd) try: try: # We must avoid complex work that could involve # malloc or free in the child process to avoid # potential deadlocks, thus we do all this here. # and pass it to fork_exec() if env is not None: env_list = [] for k, v in env.items(): k = os.fsencode(k) if b'=' in k: raise ValueError("illegal environment variable name") env_list.append(k + b'=' + os.fsencode(v)) else: env_list = None # Use execv instead of execve. executable = os.fsencode(executable) if os.path.dirname(executable): executable_list = (executable,) else: # This matches the behavior of os._execvpe(). executable_list = tuple( os.path.join(os.fsencode(dir), executable) for dir in os.get_exec_path(env)) fds_to_keep = set(pass_fds) fds_to_keep.add(errpipe_write) self.pid = _fork_exec( args, executable_list, close_fds, tuple(sorted(map(int, fds_to_keep))), cwd, env_list, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, errpipe_read, errpipe_write, restore_signals, start_new_session, process_group, gid, gids, uid, umask, preexec_fn, _USE_VFORK) self._child_created = True finally: # be sure the FD is closed no matter what os.close(errpipe_write) self._close_pipe_fds(p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) # Wait for exec to fail or succeed; possibly raising an # exception (limited in size) errpipe_data = bytearray() while True: part = os.read(errpipe_read, 50000) errpipe_data += part if not part or len(errpipe_data) > 50000: break finally: # be sure the FD is closed no matter what os.close(errpipe_read) if errpipe_data: try: pid, sts = os.waitpid(self.pid, 0) if pid == self.pid: self._handle_exitstatus(sts) else: self.returncode = sys.maxsize except ChildProcessError: pass try: exception_name, hex_errno, err_msg = ( errpipe_data.split(b':', 2)) # The encoding here should match the encoding # written in by the subprocess implementations # like _posixsubprocess err_msg = err_msg.decode() except ValueError: exception_name = b'SubprocessError' hex_errno = b'0' err_msg = 'Bad exception data from child: {!r}'.format( bytes(errpipe_data)) child_exception_type = getattr( builtins, exception_name.decode('ascii'), SubprocessError) if issubclass(child_exception_type, OSError) and hex_errno: errno_num = int(hex_errno, 16) child_exec_never_called = (err_msg == "noexec") if child_exec_never_called: err_msg = "" # The error must be from chdir(cwd). err_filename = cwd else: err_filename = orig_executable if errno_num != 0: err_msg = os.strerror(errno_num) > raise child_exception_type(errno_num, err_msg, err_filename) E FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver' /opt/anaconda3/lib/python3.11/subprocess.py:1950: FileNotFoundError During handling of the above exception, another exception occurred: > ??? /Users/wxh/Downloads/未命名文件夹 2 2/web/web_test/conftest.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /Users/wxh/Downloads/未命名文件夹 2 2/web/web_test/conftest.py:39: in ecshop_login ??? /opt/anaconda3/lib/python3.11/site-packages/selenium/webdriver/chrome/webdriver.py:69: in __init__ super().__init__(DesiredCapabilities.CHROME['browserName'], "goog", /opt/anaconda3/lib/python3.11/site-packages/selenium/webdriver/chromium/webdriver.py:89: in __init__ self.service.start() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <selenium.webdriver.chrome.service.Service object at 0x10e96d350> def start(self): """ Starts the Service. :Exceptions: - WebDriverException : Raised either when it can't start the service or when it can't connect to the service """ try: cmd = [self.path] cmd.extend(self.command_line_args()) self.process = subprocess.Popen(cmd, env=self.env, close_fds=system() != 'Windows', stdout=self.log_file, stderr=self.log_file, stdin=PIPE, creationflags=self.creationflags) except TypeError: raise except OSError as err: if err.errno == errno.ENOENT: > raise WebDriverException( "'{}' executable needs to be in PATH. {}".format( os.path.basename(self.path), self.start_error_message) E selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home /opt/anaconda3/lib/python3.11/site-packages/selenium/webdriver/common/service.py:81: WebDriverException ================================================================================== warnings summary =================================================================================== ../../../../../../opt/anaconda3/lib/python3.11/site-packages/selenium/webdriver/remote/remote_connection.py:26 /opt/anaconda3/lib/python3.11/site-packages/selenium/webdriver/remote/remote_connection.py:26: DeprecationWarning: 'urllib3[secure]' extra is deprecated and will be removed in a future release of urllib3 2.x. Read more in this issue: https://github.com/urllib3/urllib3/issues/2680 import urllib3 -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =============================================================================== short test summary info =============================================================================== ERROR test_case.py::TestCase::test_01_login - selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home ============================================================================= 1 warning, 1 error in 0.17s ============================================================================= (base) ☁ web_test
最新发布
11-14
<think>我们面对的是Docker启动失败的问题,错误信息为“service dockerd failed: exit status 1”。根据提供的引用,我们可以分析出可能的原因和解决方案。下面我将逐步分析并给出解决方案。 ### 步骤1: 检查错误日志 首先,我们需要查看详细的错误日志以确定具体原因。可以使用以下命令: ```bash sudo journalctl -u docker.service --since today --no-pager ``` 或者查看系统日志: ```bash sudo tail -n 100 /var/log/syslog ``` ### 步骤2: 常见原因及解决方案 根据引用中提供的信息,以下是可能的原因和相应的解决方案: #### 原因1: 配置文件冲突(如`/etc/docker/daemon.json`) 引用[1]提到:“unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both”。这表明`daemon.json`配置文件中存在重复的配置项或者配置冲突。 **解决方案**: 1. 检查`/etc/docker/daemon.json`文件,确保格式正确(JSON格式),并且没有重复的配置项。 2. 如果最近修改过该文件,可以尝试将其重命名或移除以测试是否是配置文件导致的问题: ```bash sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.bak ``` 3. 然后重新启动Docker服务: ```bash sudo systemctl restart docker ``` #### 原因2: WSL2配置问题(针对Windows/Mac环境) 引用[2]和[3]分别提到了MacOS和Windows环境下Docker Desktop启动失败的问题。其中引用[3]的错误信息是“Failed to set version to docker-desktop: exit code: -1”,这通常与WSL2(Windows Subsystem for Linux)有关。 **解决方案(针对Windows)**: 1. 确保已安装最新版本的WSL2内核更新包(下载地址:https://aka.ms/wsl2kernel)。 2. 设置WSL2为默认版本: ```bash wsl --set-default-version 2 ``` 3. 重启计算机,然后尝试重新启动Docker Desktop。 **对于Mac用户**(引用[2]): 1. 重置Docker Desktop:在终端中执行: ```bash rm -rf ~/Library/Containers/com.docker.docker ``` 2. 重新启动Docker Desktop。 #### 原因3: Docker Compose构建失败 引用[4]提到:“running Docker Compose build command failed: exit status 1”。这可能是由于Docker Compose文件错误或依赖问题。 **解决方案**: 1. 检查`docker-compose.yml`文件,确保格式正确,并且所有依赖的服务配置无误。 2. 尝试单独构建服务以定位问题: ```bash docker-compose build <service_name> ``` #### 原因4: 系统依赖缺失 引用[5]提到编译时链接失败(`linking with 'cc' failed: exit status: 1`),这通常是因为缺少编译工具链。虽然问题出现在Rust编译中,但Docker启动失败也可能由类似原因引起(如缺少依赖库)。 **解决方案**: 1. 安装基本的构建工具(以Ubuntu为例): ```bash sudo apt update sudo apt install build-essential ``` 2. 安装Docker所需的依赖: ```bash sudo apt install apt-transport-https ca-certificates curl software-properties-common ``` ### 步骤3: 重新启动Docker服务 在尝试上述解决方案后,重新启动Docker服务: ```bash sudo systemctl restart docker ``` ### 步骤4: 其他通用方法 如果以上步骤未能解决问题,可以尝试: 1. 重新安装Docker引擎(先卸载再安装): ```bash sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo rm -rf /var/lib/docker sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 2. 检查系统内核版本是否满足要求(Docker通常需要较新的内核)。 ### 总结 根据错误日志,我们主要关注配置文件冲突、WSL2配置(针对Windows/Mac)、依赖缺失以及Docker Compose文件问题。通过逐步排查,应该能够解决“service dockerd failed: exit status 1”的问题。 如果问题仍然存在,请提供具体的错误日志以便进一步分析。 §§相关问题§§ 1. 如何检查Docker服务的详细日志? 2. 如何正确配置Docker的`daemon.json`文件? 3. 在Windows系统上如何修复Docker Desktop启动失败的问题? 4. 如何解决Docker Compose构建失败的问题? </think>### 解决 Docker启动报错 "service dockerd failed: exit status 1" 的方法 根据引用内容,该错误通常由配置冲突或环境问题引起。以下是分步解决方案: #### 1. 检查配置文件冲突(最常见原因) 引用[1]显示错误由配置文件冲突导致: ```bash sudo nano /etc/docker/daemon.json # 检查配置文件 ``` 若发现重复配置项(如`"log-driver"`重复定义),删除重复项后重启服务: ```bash sudo systemctl restart docker ``` #### 2. 验证WSL2环境(Windows/Mac用户) 引用[2][3]显示Windows/Mac环境需检查WSL: ```bash wsl --list --verbose # 查看WSL状态 wsl --update # 更新WSL内核 ``` 完成后重启Docker Desktop。 #### 3. 修复依赖缺失问题 引用[5]表明编译依赖缺失可能导致类似错误: ```bash # Ubuntu/Debian sudo apt install build-essential libssl-dev # CentOS/RHEL sudo yum groupinstall "Development Tools" ``` #### 4. 重置Docker环境(终极方案) ```bash sudo systemctl stop docker sudo rm -rf /var/lib/docker # 清除旧数据 sudo apt purge docker-ce docker-ce-cli # 卸载 sudo apt install docker-ce # 重装 sudo systemctl start docker ``` #### 5. 检查内核兼容性 确保内核版本≥3.10(Linux): ```bash uname -r # 查看内核版本 lsmod | grep overlay # 检查overlay模块 ``` > **重要提示**:操作前备份数据 `sudo cp -r /var/lib/docker /backup`[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值