# docker容器技术期末实操
本文作者:明凡
站长:明凡
docker容器技术期末实操视频直下链接 (opens new window)
# 1.安装docker环境
# 1.1 docker-exam虚拟机配置
cd /etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
清理yum源
yum -y update //更新yum
yum clean all //清除yum缓存
yum makecache //重建yum缓存
2
3
# 配置小游戏
下载游戏资源文件,解压
暂时无法在飞书文档外展示此内容
上传到Linux目录
创建Dockerfile文件
vim Dockerfile
复制以下命令到Dockerfile
# 使用CentOS 7作为基础镜像
FROM centos:7.9.2009
#设置yum仓库
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
# 清理不必要的包缓存
RUN yum clean all
# 更新软件包列表并安装Apache HTTP Server
RUN yum update -y && yum install -y httpd
# 将游戏资源文件(当前目录下)复制到容器的/var/www/html目录下
COPY ./HexGL /var/www/html/
# 开放80端口
EXPOSE 80
# 在容器启动时运行Apache HTTP Server
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
修改后的Dockerfile
# 使用httpd作为基础镜像
FROM httpd
# 将游戏资源文件(当前目录下)复制到容器的/var/www/html目录下
COPY ./HexGL /usr/local/apache2/htdocs
# 在容器启动时运行httpd
CMD ["httpd-foreground"]
2
3
4
5
6
7
8
构建镜像
docker build -t game-xxx .
运行镜像
docker run -d -p 80:80 game-xxx
推送镜像到Harbor私有仓库
修改daemon.json
vi /etc/docker/daemon.json
{
"registry-mirrors": [ "https://88a8bf279d4a486ba021cdfcb4abc36d.mirror.swr.myhuaweicloud.com" ],
"insecure-registries": ["192.168.1.122"]
}
2
3
4
5
重启docker引擎
systemctl daemon-reload
systemctl restart docker
2
登录私有仓库:
docker login -u admin -p Harbor12345 192.168.1.122
推送本地镜像到私有仓库
# 给本地镜像打tag
docker tag game:latest 192.168.1.122/library/game-姓名
# 推送镜像到私有仓库
docker push 192.168.1.122/library/game-姓名
2
3
4
使用Docker部署webtop桌面版Linux环境
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/webtop:latest
docker run -d \
--name=webtop \
--privileged `#optional` \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e SUBFOLDER=/ `#optional` \
-p 5000:3000 \
-v /path/to/data:/config \
-v /var/run/docker.sock:/var/run/docker.sock `#optional` \
--shm-size="1gb" `#optional` \
--restart unless-stopped \
registry.cn-hangzhou.aliyuncs.com/jeson/webtop:latest
2
3
4
5
6
7
8
9
10
11
12
13
14
马里奥
docker pull registry.cn-guangzhou.aliyuncs.com/os_cmty/os_cmty:mario
docker run -d -p 5000:8080 --name maliao --restart=always registry.cn-guangzhou.aliyuncs.com/os_cmty/os_cmty:mario
2
# 黑马商城
#解压压缩包
unzip 192.168.187.128.zip
#切换目录
cd 192.168.187.128
查看目录
ls
Dockerfile、hm-service.jar文件自己找
find / -name Dockerfile
find / -name hm-service.jar
2
3
4
5
6
7
8
9
# 1.安装docker-compose
# 方法一:
//使用 curl命令来下载docker-compose文件
curl -SL "https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
//二进制文件设置可执行权限
chmod +x /usr/local/bin/docker-compose
//测试安装结果
docker-compose -v
2
3
4
5
6
# 方法二:
①下载docker-compose二进制文件:
暂时无法在飞书文档外展示此内容
②将文件通过MobaXterm移动至/usr/local/bin/目录
③执行如下命令
//修改文件名称
mv /usr/local/bin/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
//二进制文件设置可执行权限
chmod +x /usr/local/bin/docker-compose
//测试安装结果
docker-compose -v
2
3
4
5
6
# 2.docker项目
https://blog.laoda.de/categories/docker-series
创建docker-compose.yml
yum install -y vim
vim docker-compose.yml
2
运行docker-compose
docker-compose up -d //运行容器
docker-compose down //停止并移除容器
2
# 试题考卷
# 1.安装docker环境
# 1.1.“docker-exam”虚拟机配置
①解压虚拟机压缩包,并使用VMware打开。docker-exam的ens33网卡默认未启动,启动docker-exam网卡。
②虚拟机主机名修改,命名格式:docker-姓名全拼,例:docker-zhangsan。输入“su”生效。
③Yum源修改
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
④Yum源更新、重建缓存
⑤命令行补全工具包安装,输入“su”生效。
# 1.2.安装和配置docker
①配置docker-ce Yum源
yum install -y yum-utils device-mapper-persistent-data lvm2 git
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2
②安装docker-ce社区版
③配置docker镜像加速
新建或编辑/etc/docker/daemon.json文件,粘贴以下内容:
{
"registry-mirrors": [ "https://88a8bf279d4a486ba021cdfcb4abc36d.mirror.swr.myhuaweicloud.com" ]
}
2
3
重启docker引擎
# 2.构建竞速小游戏镜像
# 2.1.游戏资源文件下载
①资源文件下载并上传至虚拟机root目录
暂时无法在飞书文档外展示此内容
②解压压缩包,解压命令如下:
# 2.2.构建镜像
①创建Dockerfile文件,并编辑该文件。以下为Dockerfile文件参考命令,由于基础镜像为Centos7.9,构建后的镜像包过大,**不能使用以下参考命令构建镜像!**docker镜像仓库中存在httpd镜像,根据以下参考命令,自行思考。使用httpd作为基础镜像自行编写Dockerfile文件,要求构建镜像大小不能超过200MB!!!
所需参数:httpd镜像包html目录/usr/local/apache2/htdocs
查看镜像构建历史:docker history httpd
②构建镜像命令,镜像命名方式:game-姓名拼音全拼,如:game-zhangsan
③运行构建镜像,测试服务是否正常
④运行浏览器输入**虚拟机IP地址:端口号测试访问,并将截图粘贴至新建word文件中。
# 2.3.推送小游戏镜像至私有镜像仓库
①修改daemon.json信息,添加私有仓库IP地址(192.168.1.122)
{
"registry-mirrors": [ "https://88a8bf279d4a486ba021cdfcb4abc36d.mirror.swr.myhuaweicloud.com" ],
"insecure-registries": ["192.168.1.122"]
}
2
3
4
重启docker引擎
②登录私有仓库,给本地小游戏镜像打tag,推送至私有仓库
给本地镜像打tag
docker tag game-xxx:latest 192.168.1.122/classx/game-xxx //修改
本地镜像名称 班级 私有仓库镜像名称
例:1班张三本地镜像为game-zhangsan
docker tag game-zhangsan:latest 192.168.1.122/class1/game-zhangsan
2
3
4
推送镜像至私有仓库
docker push 192.168.1.122/classx/game-xxx
例:1班张三本地镜像为game-zhangsan
docker push 192.168.1.122/class1/game-zhangsan
2
3
# 3.电商商城部署
# 3.1.资源文件下载
①资源文件下载并上传至虚拟机root目录
暂时无法在飞书文档外展示此内容
②解压文件
# 3.2.安装docker-compose
①下载二进制文件,上传至虚拟机/usr/local/bin/目录
暂时无法在飞书文档外展示此内容
②执行如下命令
# 3.3.创建docker-compose.yml文件
①在资源目录中创建docker-compose文件并写入以下命令
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: hmall
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
②分析以上命令运行逻辑,并将所需文件移动至docker-compose文件所在目录
# 查找命令
find /root/xxxx/ -name xxxx
查找目录 文件名
2
3
③执行docker-compose.yml文件,测试业务
④访问商城页面,测试网页交互逻辑。并将以下截图粘贴至新建word文件中。
---首页
---登录商城,账号/密码:jack/123
---搜索页面
# 提交答案
①下载shell文件并上传至root目录
暂时无法在飞书文档外展示此内容
②修改shell文件输出文件名
sed -i '5c\OUTPUT_FILE="/root/commit-classx-xxx.txt"' commit.sh //修改文件名称
例:1班张三
sed -i '5c\OUTPUT_FILE="/root/commit-class1-zhangsan.txt"' commit.sh
2
3
③执行完第②步后,执行shell文件
sh commit.sh
④截图提交:
ftp://192.168.1.100
用户名/密码:save/123456