docker运⾏nginx镜像教程及命令
前⾔:
先提醒⼀下最容易忘记的,确保使⽤的防⽕墙端⼝已开启;
需要实现的功能:
使⽤docker启动nginx服务
docker开机⾃启动
nginx服务开机⾃启动docker进入容器
这样就不⽤因为服务器挂掉每次都⼿动重启服务了
环境:
服务器:⽬前使⽤的是(另外有免费虚拟主机,免备案服务),前⾯在服务器上试着跑了⼀个nignx和两个node服务,访问基本没啥压⼒,1G的内存还是够够的,当然,如果是线上项⽬需要,像搭建博客,个⼈觉得2G的内存会更合适⼀点。
容器:docker
镜像:nginx
安装docker
curl -sSL 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
参数说明:
--name nginx-test:容器名称。
-
p 8003:80:端⼝进⾏映射,将本地 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
参数说明:
-i: 交互式操作。
-t: 终端。
nginx: nginx 镜像。
/bin/bash:放在镜像名后的是命令,这⾥我们希望有个交互式 Shell,因此⽤的是 /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服务,最后才发现是需要⼿动重启下d ocker。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论