第2次实践作业

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

1、获取最新版的nginx镜像

sudo docker pull nginx:latest

注:这里也可以先不pull镜像,直接在dockerfile中FROM(FROM会从本地或者镜像库中直接获取基础镜像)

2、查看nginx镜像是否拉取成功

sudo docker images

3、启动nginx容器

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

4、查看容器状态

sudo docker ps

5、进入nginx容器并查看其配置信息

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

6、在主目录中创建myweb文件夹下创建并修改default.conf文件

(1)创建default.conf文件

(2)修改default.conf文件的监听端口和根目录

将监听端口号listen改为8024(原为80)
将Web默认目录root修改为/home/p4/myweb(原为/usr/share/nginx/html)

7.在同一目录下创建dockerfile文件并编辑

8.在同一目录下创建index.html文件并编辑

要将default.conf 、dockerfile和index.html 三个文件放在同一目录下

9.打开dockerfile文件并创建镜像ssnginx

cd myweb
sudo docker build -t ssnginx .

其中,ssnginx是所要构建镜像的名称,.表示上下文,千万不能漏掉

10.查看ssnginx是否创建成功

sudo docker images

11.启动ssnginx容器并映射端口

sudo docker run --name ssnginx -p 8024:8024 -d ssnginx

12.查看容器状态

sudo docker ps

13.访问浏览器http://localhost:8024

二、实现一个自定义的数据库容器服务

1、从镜像库中pull一个mysql镜像,版本为5.7

sudo docker pull mysql:5.7


在pull时发现有点卡住,就把终端给关了,再一次执行命令时,发现镜像已存在

2、查看镜像是否拉取成功

sudo docker images

3、在主目录下的mysql文件中创建构建mysql所需的文件

(1)dockerfile

(2)setup.sh

(3)schema.sql


需要测试,为了方便就只写了一个user表

(4)privileges.sql

4、创建镜像ssmysql

要先进入mysql目录下

cd mysql
sudo docker build -t ssmysql .

其中,ssmysql是所要构建镜像的名称,.表示上下文,千万不能漏掉

5、查看镜像是否拉取成功

sudo docker images

6、启动ssmysql容器并将端口映射到本地的3306端口

sudo docker run --name ssmysql -p 3306:3306 -d ssmysql

7、查看容器状态

sudo docker ps -a

8、查看日志记录

sudo docker logs ssmysql

9、验证结果

(1)执行exec命令进入ssmysql容器

sudo docker exec -it ssmysql /bin/bash

(2)使用css用户登录数据库

mysql -u css -p

输入密码888通过验证

(3)查看数据库

show databases;

(4)切换至docker_mysql数据库

use docker_mysql

(5)查询user表并退出mysql

select * from user;

(6)查看ssmysql容器配置

sudo docker inspect ssmysql


只截取了部分

三、遇到的问题及解决办法

1、拉取nginx镜像太慢


一直卡在这里,等了一个多小时,然后我放弃了
解决办法:采用阿里云镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://tcldyxeu.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

然后再进行镜像拉取几秒钟就解决了,实在是太快了!

2、自定义mysql镜像构建成功后却无法进入

解决方法:
使用如下命令发现错误

sudo docker logs ssmysql


原来是文件中的符号错误!!!这告诉我,一定要细心!!!
修改后,先删除镜像所对应的容器,再删除镜像


删除成功后,再重新创建镜像即可。

四、实验总结

通过本次实验,感悟最深的是做任何事情一定要细心!!细节决定成败!这次实践学会了自定义web容器服务和自定义数据库容器服务,对docker有了更加深入的了解。

posted @ 2020-04-24 00:43  也许hhh。  阅读(222)  评论(0编辑  收藏  举报