Easton's Blog Easton's Blog
首页
  • 编程语言

    • Python
  • 框架

    • Django
  • Mdn (opens new window)
  • HTML
  • CSS
  • JavaScript
  • Mysql
  • PostgreSQL
  • Elasticsearch
  • MongoDB
  • Redis
  • 服务器命令
  • Docker
  • GIT
  • 摄影
  • 草稿
  • 归类方式

    • 分类
    • 标签
    • 归档
  • 关于博客

    • 博客教程
    • 友情链接
    • 关于
导航站
GitHub (opens new window)

Easton Yang

爱生活😊爱学习
首页
  • 编程语言

    • Python
  • 框架

    • Django
  • Mdn (opens new window)
  • HTML
  • CSS
  • JavaScript
  • Mysql
  • PostgreSQL
  • Elasticsearch
  • MongoDB
  • Redis
  • 服务器命令
  • Docker
  • GIT
  • 摄影
  • 草稿
  • 归类方式

    • 分类
    • 标签
    • 归档
  • 关于博客

    • 博客教程
    • 友情链接
    • 关于
导航站
GitHub (opens new window)
  • 服务器命令

  • Docker

    • Docker介绍
    • Docker常用命令
    • Docker搭建图片服务器
      • 1. 启动 nginx 容器
      • 2. 启动图片服务器容器
      • 3. 进入容器进行各种操作
      • 4. 使用 sftp 上传一张图片,查看效果
      • 5. 访问图片
      • 6. 配置容器自启动
  • 服务器
  • Docker
eastonyangxu
2023-05-12
目录

Docker搭建图片服务器

提示

图片服务器基于 nginx 镜像,nginx 镜像的服务器是 ubuntu 系统。

注意

执行命令时需要注意是在宿主机还是容器中执行。

修改了配置需要重载 nginx ,命令:docker exec file_nginx nginx -s reload

# 1. 启动 nginx 容器

这一步主要是拷贝 nginx 容器里面的配置到宿主机中。然后宿主机目录挂载到容器中,这样只要修改本地配置就可以同步到容器中了。但是修改了配置一定要重载配置,不然不生效。

# 启动 nginx 镜像,并命名容器名为 nginx(--name 后面跟的是自定义容器名)
docker run -d --name nginx nginx

# 在宿主机上执行:
# 将容器中的 /etc/nginx 文件夹拷贝到宿主机的 /file_nginx/nginx,需要确保 /file_nginx 文件夹已经存在。
docker cp nginx:/etc/nginx /file_nginx/nginx
# 将容器中的静态文件目录拷贝到宿主机,确保 /file_nginx 文件夹已经存在。
docker cp nginx:/usr/share/nginx/html /file_nginx/html  # 可以不用拷贝,如果不拷贝,后面启动图片容器的时候可以不映射该目录

# 编辑:/file_nginx/nginx/conf.d/default.conf  # 或者在conf.d目录下新建一个以 .conf 结尾的文件
# /home/file/images/ 这个目录需要在后面容器中新建。
# 注意路径不要配置错了。

# 第一种方式:
    location /images/ {
        root /home/file/;
        autoindex on;
    }

# 第二种方式:
    location /images/ {
        alias /home/file/images/;
        autoindex on;
    }

# 停止nginx容器,并删除容器。
docker stop nginx
docker rm nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 2. 启动图片服务器容器

# 启动一个nginx容器,并命名为 file_nginx
# 22端口用来sftp上传图片,80端口用来访问图片。
# 本地 nginx 配置目录(nginx)挂载到容器中,静态文件目录(html)也挂载到容器中。文件目录(file)可以挂载到宿主机。把图片传到本地文件目录以后,就可以在浏览器访问了。配置文件目录和静态文件目录是通过第一步拷贝到宿主机的。
docker run -d --name file_nginx -p 10000:80 -p 10001:22 -v /file_nginx/nginx:/etc/nginx -v /var/log/nginx:/var/log/nginx -v /file_nginx/html:/usr/share/nginx/html -v /home/file:/home/file nginx
1
2
3
4

# 3. 进入容器进行各种操作

如果配置了图片目录挂载,这一步可以不用操作。不然需要直接把图片传到容器中。

1.进入容器:docker exec -it file_nginx /bin/bash
2.更新apt-get:apt-get update  # 不更新直接进行安装可能会报错
3.安装openssh-server:apt-get install -y openssh-server
4.启动ssh服务:/etc/init.d/ssh start   # /etc/init.d/ssh status 查看状态
5.创建用户file并创建用户目录:useradd -d /home/file -g users -m file
6.设置file用户的密码:passwd file
7.输入密码:xxxx  需要两次输入
8.切换用户:su file  # 不切换用户,是使用root创建的,后面如果使用file用户上传文件,images文件会没有权限!
9.创建images文件夹:mkdir /home/file/images
10.退出容器:ctrl+p+q
1
2
3
4
5
6
7
8
9
10

# 4. 使用 sftp 上传一张图片,查看效果

如果执行了第三步,就可以通过第四步上传文件。如果没有执行第三步,可以直接忽略,直接把图片拷贝到宿主机 file 目录即可。

1.登录sftp:sftp -P 10001 file@127.0.0.1
2.输入密码:xxxx
3.上传文件:put /Downloads/test.png /home/file/images

注意:如果images文件没有权限,需要进入到容器对文件镜像权限更改
可以使用:ls -l 文件用户权限
更改用户权限在root账号下:chown file:users images
1
2
3
4
5
6
7

# 5. 访问图片

# test.png是你上传的图片文件名包括后缀
http:127.0.0.1:10000/images/test.png
1
2

# 6. 配置容器自启动

ssh 服务器在关闭容器后,在启动需要手动启动,也可以设置开机自启动

#Docker
上次更新: 2023/08/08, 20:00:46
Docker常用命令

← Docker常用命令

最近更新
01
攻略制作要点
07-18
02
摄影主题拍摄
07-18
03
延时摄影剧本
07-18
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Easton Yang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式