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
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
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
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
2
3
4
5
6
7
# 5. 访问图片
# test.png是你上传的图片文件名包括后缀
http:127.0.0.1:10000/images/test.png
1
2
2
# 6. 配置容器自启动
ssh 服务器在关闭容器后,在启动需要手动启动,也可以设置开机自启动
上次更新: 2023/08/08, 20:00:46