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:
修改后重启Docker服务生效。"hosts": ["tcp://0.0.0.0:2375"] - 方案二:修改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
相关产品推荐
相关产品推荐

