docker 启动方式和停止

本文记录了用户wangshumin在machine1上使用sudo权限启动、重启及停止Docker服务的过程,并展示了Docker服务的状态变化及部分日志信息。
wangshumin@machine1:~$ sudo systemctl start  docker.service
wangshumin@machine1:~$ systemctl status docker.service

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2018-03-08 09:48:26 CST; 3s ago
     Docs: https://docs.docker.com
 Main PID: 56947 (dockerd)
    Tasks: 35
   Memory: 15.0M
      CPU: 436ms
   CGroup: /system.slice/docker.service
           ├─56947 /usr/bin/dockerd -H fd://
           └─56961 containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim contai


3月 08 09:48:26 machine1 dockerd[56947]: time="2018-03-08T09:48:26.318752562+08:00" level=info msg="Firewalld running: false"
3月 08 09:48:26 machine1 dockerd[56947]: time="2018-03-08T09:48:26.475102086+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be u
3月 08 09:48:26 machine1 dockerd[56947]: time="2018-03-08T09:48:26.884095864+08:00" level=info msg="Loading containers: done."
3月 08 09:48:26 machine1 dockerd[56947]: time="2018-03-08T09:48:26.911323936+08:00" level=warning msg="Couldn't run auplink before unmount /var/lib/docker/tmp/docker-aufs-union414855277: exec: \"aupl
3月 08 09:48:26 machine1 dockerd[56947]: time="2018-03-08T09:48:26.947525731+08:00" level=warning msg="failed to retrieve runc version: unknown output format: runc version spec: 1.0.0-rc2-dev\n"
3月 08 09:48:26 machine1 dockerd[56947]: time="2018-03-08T09:48:26.949928454+08:00" level=warning msg="failed to retrieve docker-init version: unknown output format: tini version 0.13.0\n"
3月 08 09:48:26 machine1 dockerd[56947]: time="2018-03-08T09:48:26.950447067+08:00" level=info msg="Daemon has completed initialization"
3月 08 09:48:26 machine1 dockerd[56947]: time="2018-03-08T09:48:26.950667788+08:00" level=info msg="Docker daemon" commit=092cba3 graphdriver=aufs version=1.13.1
3月 08 09:48:26 machine1 systemd[1]: Started Docker Application Container Engine.
3月 08 09:48:27 machine1 dockerd[56947]: time="2018-03-08T09:48:27.000200137+08:00" level=info msg="API listen on /var/run/docker.sock"


wangshumin@machine1:~$ systemctl restart  docker.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
需要通过认证才能重启“docker.service”。
Authenticating as: wangshumin,,, (wangshumin)
Password: 
==== AUTHENTICATION COMPLETE ===
wangshumin@machine1:~$ systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2018-03-08 09:50:59 CST; 5s ago
     Docs: https://docs.docker.com
 Main PID: 57160 (dockerd)
    Tasks: 29
   Memory: 14.5M
      CPU: 378ms
   CGroup: /system.slice/docker.service
           ├─57160 /usr/bin/dockerd -H fd://
           └─57163 containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim contai


3月 08 09:50:58 machine1 dockerd[57160]: time="2018-03-08T09:50:58.763436752+08:00" level=info msg="Firewalld running: false"
3月 08 09:50:58 machine1 dockerd[57160]: time="2018-03-08T09:50:58.924182593+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be u
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.333019366+08:00" level=info msg="Loading containers: done."
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.351680469+08:00" level=warning msg="Couldn't run auplink before unmount /var/lib/docker/tmp/docker-aufs-union804106004: exec: \"aupl
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.387313851+08:00" level=warning msg="failed to retrieve runc version: unknown output format: runc version spec: 1.0.0-rc2-dev\n"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393043518+08:00" level=warning msg="failed to retrieve docker-init version: unknown output format: tini version 0.13.0\n"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393219748+08:00" level=info msg="Daemon has completed initialization"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393235194+08:00" level=info msg="Docker daemon" commit=092cba3 graphdriver=aufs version=1.13.1
3月 08 09:50:59 machine1 systemd[1]: Started Docker Application Container Engine.
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.427397047+08:00" level=info msg="API listen on /var/run/docker.sock"
...skipping...
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2018-03-08 09:50:59 CST; 5s ago
     Docs: https://docs.docker.com
 Main PID: 57160 (dockerd)
    Tasks: 29
   Memory: 14.5M
      CPU: 378ms
   CGroup: /system.slice/docker.service
           ├─57160 /usr/bin/dockerd -H fd://
           └─57163 containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim contai


3月 08 09:50:58 machine1 dockerd[57160]: time="2018-03-08T09:50:58.763436752+08:00" level=info msg="Firewalld running: false"
3月 08 09:50:58 machine1 dockerd[57160]: time="2018-03-08T09:50:58.924182593+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be u
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.333019366+08:00" level=info msg="Loading containers: done."
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.351680469+08:00" level=warning msg="Couldn't run auplink before unmount /var/lib/docker/tmp/docker-aufs-union804106004: exec: \"aupl
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.387313851+08:00" level=warning msg="failed to retrieve runc version: unknown output format: runc version spec: 1.0.0-rc2-dev\n"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393043518+08:00" level=warning msg="failed to retrieve docker-init version: unknown output format: tini version 0.13.0\n"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393219748+08:00" level=info msg="Daemon has completed initialization"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393235194+08:00" level=info msg="Docker daemon" commit=092cba3 graphdriver=aufs version=1.13.1
3月 08 09:50:59 machine1 systemd[1]: Started Docker Application Container Engine.
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.427397047+08:00" level=info msg="API listen on /var/run/docker.sock"


wangshumin@machine1:~$ systemctl stop docker.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
需要通过认证才能停止“docker.service”。
Authenticating as: wangshumin,,, (wangshumin)
Password: 
==== AUTHENTICATION COMPLETE ===
wangshumin@machine1:~$ systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 四 2018-03-08 09:51:16 CST; 1s ago
     Docs: https://docs.docker.com
  Process: 57160 ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS (code=exited, status=0/SUCCESS)
 Main PID: 57160 (code=exited, status=0/SUCCESS)


3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.387313851+08:00" level=warning msg="failed to retrieve runc version: unknown output format: runc version spec: 1.0.0-rc2-dev\n"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393043518+08:00" level=warning msg="failed to retrieve docker-init version: unknown output format: tini version 0.13.0\n"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393219748+08:00" level=info msg="Daemon has completed initialization"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393235194+08:00" level=info msg="Docker daemon" commit=092cba3 graphdriver=aufs version=1.13.1
3月 08 09:50:59 machine1 systemd[1]: Started Docker Application Container Engine.
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.427397047+08:00" level=info msg="API listen on /var/run/docker.sock"
3月 08 09:51:16 machine1 systemd[1]: Stopping Docker Application Container Engine...
3月 08 09:51:16 machine1 dockerd[57160]: time="2018-03-08T09:51:16.689175029+08:00" level=info msg="Processing signal 'terminated'"
3月 08 09:51:16 machine1 dockerd[57160]: time="2018-03-08T09:51:16.696554607+08:00" level=info msg="stopping containerd after receiving terminated"
3月 08 09:51:16 machine1 systemd[1]: Stopped Docker Application Container Engine.
wangshumin@machine1:~$ docker  info 
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
wangshumin@machine1:~$ docker  info 
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
wangshumin@machine1:~$ systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 四 2018-03-08 09:51:16 CST; 58s ago
     Docs: https://docs.docker.com
  Process: 57160 ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS (code=exited, status=0/SUCCESS)
 Main PID: 57160 (code=exited, status=0/SUCCESS)


3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.387313851+08:00" level=warning msg="failed to retrieve runc version: unknown output format: runc version spec: 1.0.0-rc2-dev\n"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393043518+08:00" level=warning msg="failed to retrieve docker-init version: unknown output format: tini version 0.13.0\n"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393219748+08:00" level=info msg="Daemon has completed initialization"
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.393235194+08:00" level=info msg="Docker daemon" commit=092cba3 graphdriver=aufs version=1.13.1
3月 08 09:50:59 machine1 systemd[1]: Started Docker Application Container Engine.
3月 08 09:50:59 machine1 dockerd[57160]: time="2018-03-08T09:50:59.427397047+08:00" level=info msg="API listen on /var/run/docker.sock"
3月 08 09:51:16 machine1 systemd[1]: Stopping Docker Application Container Engine...
3月 08 09:51:16 machine1 dockerd[57160]: time="2018-03-08T09:51:16.689175029+08:00" level=info msg="Processing signal 'terminated'"
3月 08 09:51:16 machine1 dockerd[57160]: time="2018-03-08T09:51:16.696554607+08:00" level=info msg="stopping containerd after receiving terminated"
3月 08 09:51:16 machine1 systemd[1]: Stopped Docker Application Container Engine.
wangshumin@machine1:~$ systemctl restart  docker.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
需要通过认证才能重启“docker.service”。
Authenticating as: wangshumin,,, (wangshumin)
Password: 
==== AUTHENTICATION COMPLETE ===
wangshumin@machine1:~$ systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2018-03-08 09:52:25 CST; 2s ago
     Docs: https://docs.docker.com
 Main PID: 57333 (dockerd)
    Tasks: 33
   Memory: 15.1M
      CPU: 304ms
   CGroup: /system.slice/docker.service
           ├─57333 /usr/bin/dockerd -H fd://
           └─57346 containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim contai


3月 08 09:52:24 machine1 dockerd[57333]: time="2018-03-08T09:52:24.884602631+08:00" level=info msg="Firewalld running: false"
3月 08 09:52:25 machine1 dockerd[57333]: time="2018-03-08T09:52:25.005560025+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be u
3月 08 09:52:25 machine1 dockerd[57333]: time="2018-03-08T09:52:25.675045378+08:00" level=info msg="Loading containers: done."
3月 08 09:52:25 machine1 dockerd[57333]: time="2018-03-08T09:52:25.700883769+08:00" level=warning msg="Couldn't run auplink before unmount /var/lib/docker/tmp/docker-aufs-union787037334: exec: \"aupl
3月 08 09:52:25 machine1 dockerd[57333]: time="2018-03-08T09:52:25.730955867+08:00" level=warning msg="failed to retrieve runc version: unknown output format: runc version spec: 1.0.0-rc2-dev\n"
3月 08 09:52:25 machine1 dockerd[57333]: time="2018-03-08T09:52:25.744930685+08:00" level=warning msg="failed to retrieve docker-init version: unknown output format: tini version 0.13.0\n"
3月 08 09:52:25 machine1 dockerd[57333]: time="2018-03-08T09:52:25.745584742+08:00" level=info msg="Daemon has completed initialization"
3月 08 09:52:25 machine1 dockerd[57333]: time="2018-03-08T09:52:25.745828422+08:00" level=info msg="Docker daemon" commit=092cba3 graphdriver=aufs version=1.13.1
3月 08 09:52:25 machine1 systemd[1]: Started Docker Application Container Engine.
3月 08 09:52:25 machine1 dockerd[57333]: time="2018-03-08T09:52:25.785820688+08:00" level=info msg="API listen on /var/run/docker.sock"
lines 1-22/22 (END)
<think> 我们被要求查找使用Docker启动所有停止的容器的方法。根据引用[4]中提到的,可以使用容器名或containerID来启动多个容器。但是,我们想要启动的是所有停止的容器,而不是特定的容器。 在引用[4]中提到了一种方法:使用`docker restart`命令,但是该命令是针对特定容器ID的。不过,我们可以通过组合命令来实现启动所有停止的容器。 另外,引用[5]中提到了一些容器相关命令,例如查看容器、启动容器等。我们可以使用`docker ps`命令来查看容器状态,但是我们需要的是所有停止的容器。 思路: 1. 首先,我们需要获取所有停止的容器的ID或名称。 2. 然后,使用`docker start`命令来启动这些容器。 如何获取所有停止的容器? 使用命令:`docker ps -a`可以查看所有容器(包括停止的)。然后我们可以使用过滤选项来只显示停止的容器。根据Docker文档,我们可以使用`--filter "status=exited"`来过滤出已停止的容器。 因此,我们可以这样: `docker ps -a --filter "status=exited" -q` 解释: - `-a`:显示所有容器(默认只显示运行中的) - `--filter "status=exited"`:过滤状态为退出的容器(即停止的容器) - `-q`:只显示容器ID 然后,我们可以将这些ID传递给`docker start`命令。 所以,完整的命令是: `docker start $(docker ps -a --filter "status=exited" -q)` 注意:这个命令在Unix-like系统(如LinuxMac)的shell中有效,在Windows的命令提示符中可能无效。在Windows的PowerShell中,可以使用类似的方法,但可能需要调整。 但是,引用[3][4]中也提到了一些特殊情况,比如容器无法停止或启动的问题。如果某个停止的容器因为某些原因无法启动,那么这个命令可能会在遇到错误时停止。我们可以考虑忽略错误继续启动其他容器,但通常我们希望能看到错误信息。 另外,引用[4]还提到了批量重启容器,但我们要的是启动停止的容器,而不是重启(restart是停止然后启动,而start只是启动停止的容器)。 因此,我们推荐使用上述命令。 但是,如果没有任何停止的容器,这个命令会尝试启动一个空列表,Docker会报错说至少需要一个容器ID。我们可以忽略这个错误,或者先判断一下是否有停止的容器。 另外,我们也可以使用`xargs`来避免空参数的情况,但`docker start`在没有参数时不会执行,所以上面的命令在没有任何停止容器时会报错。我们可以使用以下改进: 在Bash中,我们可以这样写: ``` stopped_containers=$(docker ps -a --filter "status=exited" -q) if [ -n "$stopped_containers" ]; then docker start $stopped_containers fi ``` 但是,如果我们要写成一行命令,可以这样(利用bash的特性): `docker ps -a --filter "status=exited" -q | xargs -r docker start` 解释:`xargs`将前面命令的输出作为参数传递给`docker start`,`-r`选项表示如果输入为空则不执行命令(避免执行`docker start`不带参数)。 然而,在Mac OS X上的`xargs`可能不支持`-r`选项(因为BSD版本的xargs没有-r),所以可以这样: `docker ps -a --filter "status=exited" -q | xargs docker start 2>/dev/null` 但是,这样会忽略错误信息,不太友好。或者我们可以检查是否有输出,再执行: 在Bash中: `containers=$(docker ps -aq -f status=exited) && [[ ! -z "$containers" ]] && docker start $containers` 在PowerShell中,我们可以这样: ``` $containers = docker ps -a --filter "status=exited" -q if ($null -ne $containers) { docker start $containers } ``` 考虑到用户可能在不同平台,我们给出通用方法: 对于Linux/Mac: ``` docker start $(docker ps -a -q --filter "status=exited") ``` 注意:如果停止的容器很多,可能会遇到参数列表过长的问题。这时候可以使用`xargs`: ``` docker ps -a -q --filter "status=exited" | xargs docker start ``` 对于Windows PowerShell: ``` docker start $(docker ps -a -q --filter "status=exited") ``` 或者 ``` docker ps -a -q --filter "status=exited" | % { docker start $_ } ``` 但是,我们还要注意,引用[3]中提到容器无法停止的情况,但这里是启动,所以一般不会有问题。如果容器启动失败,会有相应的错误提示。 总结: 最直接的方法是使用: `docker start $(docker ps -a -q --filter "status=exited")` 在类Unix系统上,如果停止的容器数量很多,为了避免参数过长,可以使用: `docker ps -a -q --filter "status=exited" | xargs docker start` 在Windows PowerShell中,可以使用: `docker ps -a -q --filter "status=exited" | ForEach-Object { docker start $_ }` 因此,根据用户的需求,我们给出不同平台的解决方案。 另外,引用[4]中还有一种方法,就是使用容器名,但这里我们使用ID,因为ID是唯一的,而且-q选项输出ID。 注意:`docker ps -a --filter "status=exited"` `docker ps -a --filter status=exited` 是一样的。 所以,我们给出以下答案: </think> 要启动所有停止Docker 容器,可以使用组合命令一次性操作。以下是具体方法步骤: ### 方法 1:单命令启动所有停止容器(Linux/macOS) ```bash docker start $(docker ps -a -q -f status=exited) ``` - **命令解析**: - `docker ps -a -q -f status=exited`:列出所有停止容器(状态为 `exited`)的 ID - `-a`:显示所有容器(包括停止的) - `-q`:只输出容器 ID(静默模式) - `-f status=exited`:过滤出已停止的容器[^5] - `docker start`:用上一步获取的 ID 列表启动容器 ### 方法 2:PowerShell 启动(Windows) ```powershell docker start (docker ps -a -q -f status=exited) ``` ### 方法 3:分步操作(通用) 1. **查看停止的容器**: ```bash docker ps -a --filter status=exited ``` 2. **启动所有停止容器**: ```bash docker container start $(docker container ls -aq -f status=exited) ``` ### 注意事项 1. **权限问题**:确保命令在 `sudo` 或管理员模式下运行(如需权限) 2. **特殊状态处理**:若容器因错误停止,先检查日志: ```bash docker logs <容器ID> # 诊断启动失败原因[^3] ``` 3. **批量操作风险**:建议先确认容器列表: ```bash docker ps -a -f status=exited # 核对要启动的容器 ``` ### 示例流程 ```bash # 1. 查看当前所有停止容器 $ docker ps -a -f status=exited CONTAINER ID IMAGE STATUS a1b2c3d4e5f6 nginx:alpine Exited (0) 2 hours ago x9y8z7w6v5u4 redis:latest Exited (0) 1 day ago # 2. 启动所有停止容器 $ docker start $(docker ps -a -q -f status=exited) a1b2c3d4e5f6 x9y8z7w6v5u4 # 3. 验证状态 $ docker ps -f status=running CONTAINER ID IMAGE STATUS NAMES a1b2c3d4e5f6 nginx:alpine Up 2 seconds web-server x9y8z7w6v5u4 redis:latest Up 1 second cache-db ``` ### 常见问题解决 - **容器无法启动**:使用调试模式查看错误 ```bash docker run -it --rm <镜像名> sh # 交互式调试[^3] ``` - **资源冲突**:检查端口/卷占用 ```bash docker inspect <容器ID> | grep -i "port\|volume" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值