docker安装之后默认并不会自动启动服务,需要手动来启动docker。当重启电脑之后我们同样也需要手动启动docker服务,这样不仅麻烦,当出现停电重启等异常时还会导致服务无法被正常访问。所以我们有必要设置下docker开机自动启动,以保证服务能及时恢复运行。
查看docker的运行状态
docker自动启动主要分为服务自动启动和容器自动启动,我们先来查看下docker服务是否启动。执行命令:systemctl status docker可以查看docker的运行状态,这里我们可以看到刚开机的Centos中Active: inactive (dead)(也就是未启动)。如果启动了则是 Active: active (running) since 五 2020-10-02 14:30:17 CST; 2s ago,后面起启动时间。
自动启动docker服务
启动docker在前面我们已经说到,通过命令:systemctl start docker就可以来启动docker服务。设置docker服务自启动可以通过命令:systemctl enable docker.service来实现,如果你想禁止服务自启动则可以通过命令:systemctl disable docker.service来关闭自动启动。 查看docker服务是否自动启动可以执行命令:systemctl is-enabled docker.service来查看状态,enabled则说明已设置自动启动。
查看docker容器是否启动
一般情况下将docker服务设置了自动启动之后docker容器同样不会自动启动,前面我们拉取了一个hello-world的镜像示例我们来查看下是否启动。执行命令:docker ps 会列出所有正在运行的容器,而docker ps -a 可以查看所有容器(显示所有的容器,包括未运行的)。
自动启动docker容器
通过上面的配置我们已经实现了doker服务的开启自动启动,但是光启动docker服务并不能访问我们部署的服务。我们还需要将对应的docker容器也启动才能获取服务,所以这时候我们需要docker容器也可以随着docker服务的启动随之启动。在创建容器时添加参数 --restart=always 后,当docker重启时容器会自动启动。
容器后台运行
执行docker ps -a命令后可以看到hello-world镜像的容器信息,但是这里发现刚运行的容器到查看时就已经处于Exited(退出状态),所以执行docker ps命令不会显示hello-world镜像的容器信息。那么我们要希望在退出容器之后容器仍然在后台运行怎么办呢?这里我们在运行容器的时候就需要添加一个参数-d让容器在后台运行,这样容器的状态就是在更新时间而不是Exited状态了。
总结:
docker run的参数可以相当的长,每次手动启动容器都觉得非常的困难。这里还是设置成自启动,可以省心不少。以上内容是小编给大家分享的【Docker实战004:配置docker开机自动启动】,希望对大家有所帮助。如果大家有任何疑问请给我留言,小编会及时回复大家的。
为了方便学习,下面附上本文用到的源码:
//查看docker的运行状态# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: https://docs.docker.com# systemctl enable docker.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.# systemctl is-enabled docker.serviceenabled # docker ps //Docker已启动,但是没有正在运行的容器CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# docker ps -a //Docker已启动,有运行容器已退出CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES7d18fe5d8723 hello-world "/hello" 2 minutes ago Exited (0) 2 minutes ago brave_hermann# docker ps -a //Docker未启动Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? --restart string // Restart policy to apply when a containerb exits (default "no") no - 容器退出时,不重启容器; on-failure - 只有在非0状态退出时才从新启动容器; always - 无论退出状态是如何,都重启容器;# docker run nginx# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES678b40604a99 nginx "/docker-entrypoint.…" 47 seconds ago Exited (0) 9 seconds ago epic_shannon#docker run -d nginx# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMEScc3641d59c2b nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp silly_wu