2020系统综合实践 第2次实践作业

1.实现一个自定义的web容器服务

获取nginx镜像

sudo docker pull nginx

查看镜像情况

sudo docker images

启动nginx容器

sudo docker run --name nginx-test -p 8080:80 -d nginx
Sudo docker ps

通过浏览器访问8080端口查看

进入nginx容器并复制其配置信息:

sudo docker exec -it 9fa0577f4261 /bin/bash
cd /etc/nginx/conf.d
cat default.conf

在/usr/share/nginx路径下创建mydir文件夹,并在该文件下创建文件default.conf,其中监听端口自选,根目录就是放配置文件的地方

在同一目录下创建dockerfile文件

#基础镜像
FROM nginx
#维护人信息
MAINTAINER dyssl

#添加文件
COPY default.conf /etc/nginx/conf.d/
COPY index.html /usr/share/nginx/mydir/
#暴露端口
EXPOSE 5416

在同一目录下创建index.html文件

结构大概是这样

在配置文件存放的目录下构建镜像(注意不要漏掉点哦)

cd /usr/share/nginx/mydir
sudo docker build -t zyh3nginx .

启动容器并映射窗口

sudo docker run --name zyh3nginx -d -p 5416:5416 zyh3nginx

最后就可以通过浏览器来访问啦

2.实现一个自定义的数据库容器服务

从镜像库中获取mysql:5.7镜像

sudo docker pull mysql:5.7

验证查看是否pull成功

sudo docker images

在~/路径下创建mysql文件夹,并在该文件下创建文件dockerfile文件

#基础镜像
FROM mysql:5.7
#镜像作者
MAINTAINER DysSl
#设置不允许免密登录并设置root密码
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
ENV MYSQL_ROOT_PASSWORD=106741
#将配置文件放到容器中
COPY setup.sh /mysql/setup.sh
COPY schema.sql /mysql/schema.sql
COPY privileges.sql /mysql/privileges.sql
#设置容器启动时执行的命令
CMD ["sh", "/mysql/setup.sh"]

在同一目录下创建启动脚本setup.sh

在同一目录下创建脚本命令schema.sql

在同一目录下创建权限设置命令privileges.sql

在配置文件存放的目录下构建镜像

docker build -t zyh2mysql .

启动容器并映射窗口

docker run --name zyh2mysql -d -p 2424:2424 zyh2mysql

进入容器

sudo docker exec -it zyh2mysql /bin/bash

登录数据库

mysql -u docker -p

切换至docker_mysql数据库

use docker_mysql

查看Student表中的数据

select * from Student;

查看容器的配置信息

sudo docker inspect 3fccf6f5b712

3.遇到的问题

当时做web容器服务的时候,访问自己的端口报错403

找了非常久内鬼是谁,最后查了一下日志文件发现是权限的问题

解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

sudo docker exec -it 070e18bc500b /bin/bash 
chmod -R 777 /usr/share/nginx/mydir

最后感谢那么多给我帮助的人

原文地址:https://www.cnblogs.com/dyssl/p/12768635.html