前言:
先提醒一下最容易忘记的,确保使用的防火墙端口已开启;
需要实现的功能:
这样就不用因为服务器挂掉每次都手动重启服务了
环境:
服务器:三·丰·云免费云服务器(还有免费虚拟主机,免备案服务)
容器:docker
镜像:nginx
安装docker
curl -sSL https://get.daocloud.io/docker | sh
运行docker
systemctl start docker
如果不运行docker,直接执行后面的操作会报错:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
设置开启启动docker;不然每次重启主机还得手动运行docker
systemctl enable docker
参数:
enable:自启动; disable:禁止自启动
拉取nignx镜像
docker pull nginx
查看本地镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c919045c4c2b 42 hours ago 141MB
运行镜像
docker run --name nginx-test -p 8003:80 -d nginx
参数说明:
访问nginx
踩坑:如果发现访问不到,页面一直打不开,可以排除以下原因
常用命令:
查看防火墙开启的端口命令:
firewall-cmd --list-ports
开启端口8003(还需执行下面重启命令才能生效)
firewall-cmd --zone=public --add-port=8003/tcp --permanent
重启
firewall-cmd --reload
2. nginx配置是否正确,一般不用配置,默认80端口可以直接访问
查看容器:
docker ps -a
-a可以查看所有容器,去掉-a只显示正在运行的容器
删除容器:需要指定container ID<容器 ID>
docker rm -f 1e560fca3906
停止容器:
docker stop <容器 ID>
启动停止的容器:
docker start <容器 ID>
启动并进入容器:
docker run -it nginx /bin/bash
参数说明:
exit退出容器会停止运行
进入已运行的容器:
docker exec -it <容器 ID> /bin/bash
推荐使用:docker exec进入容器,使用exit退出容器不会停止; docker attach <容器 ID>进入容器,使用exit退出容器会停止
退出容器:
exit
设置容器开机自动重启(需要重启docker才能生效哦)
// 启动容器 docker run --restart=always --name nginx-test -p 8003:80 -d nginx systemctl restart docker
或者
// 更新已启动的容器 docker container update --restart=always <容器ID>
systemctl restart docker
最后:容器自启动遇到一个小坑,设置了--restart=always,但是重启服务器之后,发现docker并没有自启动nginx服务,最后才发现是需要手动重启下docker。