You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Docker已注册为服务,如何设置GitLab容器开机自启?

问题描述

我已经在Windows系统中使用dockerd --register-service命令注册了Docker守护进程,希望GitLab容器能在系统启动时(登录前)运行,请问需要进行哪些设置?

我的windows-daemon-option.json配置如下:

{    
    "allow-nondistributable-artifacts": ["host_port_or_cidr|redacted"],    
    "authorization-plugins": [],    
    "bridge": "none",    
    "cluster-advertise": "",    
    "cluster-store": "",    
    "data-root": "path|redacted",    
    "debug": true,    
    "default-ulimits": {},    
    "disable-legacy-registry": false,    
    "dns": ["ip|redacted"],    
    "dns-opts": [],    
    "dns-search": ["domain|redacted"],    
    "exec-opts": [],    
    "experimental": true,    
    "fixed-cidr": "redacted",    
    "graph": "deprecated|redacted",    
    "group": "",    
    "hosts": ["tcp://0.0.0.0:80"],    
    "insecure-registries": ["host_port_or_cidr|redacted"],    
    "labels": [],    
    "live-restore": true,    
    "log-driver": "",    
    "log-level": "",    
    "max-concurrent-downloads": 3,    
    "max-concurrent-uploads": 5,    
    "metrics-addr":"endpoint|redacted",    
    "mtu": 0,    
    "pidfile": "redacted",    
    "raw-logs": false,    
    "registry-mirrors": ["registry|redacted"],    
    "shutdown-timeout": 15,    
    "storage-driver": "",    
    "storage-opts": [],    
    "swarm-default-advertise-addr": "endpoint|redacted",    
    "tlscacert": "redacted",    
    "tlscert": "redacted",    
    "tlskey": "redacted",    
    "tlsverify": true
}

补充说明
我已经创建了如下GitLab容器:

docker run `
  --detach `
  --hostname gitlab.mydomain.de `
  --ip 192.168.178.35 `
  --publish 443:443 --publish 80:80 --publish 22:22 `
  --name gitlab `
  --restart always `
  --volume $env:GITLAB_HOME/config:/etc/gitlab `
  --volume $env:GITLAB_HOME/logs:/var/log/gitlab `
  --volume $env:GITLAB_HOME/data:/var/opt/gitlab `
  --shm-size 256m `
  gitlab/gitlab-ce:15.4.0-ce.0 `
解决步骤

要让GitLab容器在Windows登录前自动启动,需完成以下关键配置:

1. 确保Docker服务无登录依赖启动

  • 按下Win + R输入services.msc打开服务管理器
  • 找到Docker或Docker Desktop Service(取决于你的注册名称)
  • 右键选择属性,将启动类型设为自动(不要选“自动(延迟启动)”,避免启动滞后)
  • 在登录选项卡中选择本地系统账户,可勾选允许服务与桌面交互以规避权限问题

2. 确认容器重启策略有效性

你已使用--restart always创建容器,这个配置是符合要求的。结合守护进程配置中开启的"live-restore": true,容器会随Docker服务启动自动恢复运行,无需额外调整。

3. 解决端口冲突问题

你的Docker守护进程hosts配置占用了80端口,而GitLab容器也映射了80端口,这会导致容器启动失败,必须修改其中一个:

  • 方案一:修改Docker守护进程端口
    编辑windows-daemon-option.json,将hosts中的端口改为非80值,比如默认Docker API端口2375:
    "hosts": ["tcp://0.0.0.0:2375"]
    
    修改后重启Docker服务生效。
  • 方案二:修改GitLab容器端口映射
    重新创建容器,将主机80端口改为其他值,比如8080:
    docker run `
      --detach `
      --hostname gitlab.mydomain.de `
      --ip 192.168.178.35 `
      --publish 443:443 --publish 8080:80 --publish 22:22 `
      --name gitlab `
      --restart always `
      --volume $env:GITLAB_HOME/config:/etc/gitlab `
      --volume $env:GITLAB_HOME/logs:/var/log/gitlab `
      --volume $env:GITLAB_HOME/data:/var/opt/gitlab `
      --shm-size 256m `
      gitlab/gitlab-ce:15.4.0-ce.0
    

4. 验证配置结果

  • 重启Windows系统,无需登录,直接通过其他设备访问GitLab的IP和对应端口(如http://192.168.178.35或http://192.168.178.35:8080),确认服务正常。
  • 若容器未启动,可通过服务管理器查看Docker日志,或执行docker logs gitlab排查错误。

内容的提问来源于stack exchange,提问作者Z.J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:35:41