使用docker-compose部署服务,离线环境下拉取不到镜像的情况,可以在有网络的服务器上拉取镜像,把镜像打成离线包,然后上传到无网络的内网服务器上再使用docker部署。
具体操作参考下面的文章:
把docker镜像打成离线包-CSDN博客文章浏览阅读293次,点赞6次,收藏9次。隔绝外网的情况下使用docker部署服务是拉取不到镜像的,不过还是有解决方案:在有网络的服务器上拉取镜像,把镜像打成离线包,然后上传到无网络的内网服务器上再使用docker部署。离线环境安装docker和docker-compose参考下面这篇文章Linux环境离线安装Docker和docker-compose-CSDN博客Linux环境离线安装Docker和docker-compose.tar。https://blog.csdn.net/Muscleheng/article/details/148717623?fromshare=blogdetail&sharetype=blogdetail&sharerId=148717623&sharerefer=PC&sharesource=Muscleheng&sharefrom=from_link
docker-compose 部署服务,这里以部署Nginx为例:
docker-compose.yml
文件在指定目录中创建一个nginx目录(例:/home/hy/nginx),进入nginx目录,创建docker-compose.yml文件
version: '3.8'
services:
nginx:
# 镜像
image: nginx:1.22-alpine
# 自定义容器名称
container_name: wz-nginx
privileged: true
# 重启策略,unless-stopped容器意外退出时自动重启,除非手动停止
restart: unless-stopped
# 映射宿主机端口到容器端口,如果需要HTTPS,映射443端口
ports:
- '80:80'
- '443:443'
- '9032:5000'
environment:
- TZ=Asia/Shanghai
# 挂载,左边是手动创建的目录,右边是容器内的目录
volumes:
- ./conf/nginx.conf:/etc/nginx/nginx.conf # 挂载自定义Nginx配置
- ./conf/conf.d:/etc/nginx/conf.d # 自动加载 conf.d/下的所有.conf文件
- ./logs:/var/log/nginx # 挂载日志目录
- ./html:/usr/share/nginx/html # 挂载静态网站文件
mkdir -p conf/conf.d
mkdir logs
mkdir html
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 可添加更多配置,如反向代理、负载均衡等
# location /api {
# proxy_pass http://backend:8080;
# }
}
# 自动加载 conf.d/ 下的所有 .conf 文件
include /etc/nginx/conf.d/*.conf;
}
以创建 html/index.html
(示例):
Nginx with Docker Compose
Hello, Nginx!
This is running inside Docker.
# docker-compose.yml文件所在目录执行,后台运行
docker-compose up -d
docker-compose ps
输出示例:
[root@1-E1090Y59379 nginx]# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
wz-nginx nginx:1.22-alpine "/docker-entrypoint.…" nginx 41 seconds ago Up 41 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:9032->5000/tcp, [::]:9032->5000/tcp
在服务器上curl地址,或者浏览器访问服务器ip和nginx配置的端口
# 服务器上curl地址,或者浏览器访问
curl http://127.0.0.1
输出示例:这就把前面创建的静态文件index.html输出,说明Nginx正常运行。
[root@1-E1090Y59379 nginx]# curl http://127.0.0.1
Nginx with Docker Compose
Hello, Nginx!
This is running inside Docker.
# 查看正在运行的容器
docker-compose ps
# 重启nginx ,命令中 nginx 是 docker-compose.yml 中 services: 下的服务名称。
# 不加服务名称就是重启 docker-compose.yml 文件中的所有容器服务。
docker-compose restart nginx
# 停止
docker-compose stop nginx
# 启动
docker-compose stop start
# 停止并删除容器
docker-compose down
# 重新创建并启动容器服务,修改docker-compose.yml文件后需要执行该命令重新创建并启动。
# 执行该命令之前可以不用执行 docker-compose down。
docker-compose up -d