第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有了更加深入的了解。