手动制作一个h5小游戏镜像
# 启动一个基础镜像 (启动完前往别退出)
[root@docker01 ~]# docker run -it centos:7 /bin/bash
# 2.换源(如果需要的话)
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
# 3.安装nginx
[root@7f1f379d73d9 /]# yum install -y nginx
# 4.编写配置文件
1)直接在/etc/nginx/nginx.conf里的server层编写配置文件
或
2)把/etc/nginx/nginx.conf里的server层删除,重新在/etc/nginx/conf.d/h5_games.conf编写配置文件
vi /etc/nginx/conf.d/h5.conf
server{
listen 80;
server_name _;
root /code;
index index.html;
}
或
3)(不用编写配置文件,直接放到/usr/share/nginx/html目录下 unzip h5_games.zip -d /usr/share/nginx/html
然后把h5_games移到/code目录下)
# 5.创建一个站点目录
[root@7f1f379d73d9 /]# mkdir /code
[root@7f1f379d73d9 /]# cd /code
# 6.把宿主机上的游戏包拷贝到容器
[root@docker01 ~]# docker cp /root/h5_games.zip 7f1f379d73d9:/code
# 7.解压游戏包(没有unzip就安装)
[root@7f1f379d73d9 code]# yum install -y unzip
[root@7f1f379d73d9 code]# unzip h5_games.zip
# 8.部署代码(把h5_games里的包都移到code站点目录下)
[root@7f1f379d73d9 code]# mv /code/h5_games/* .
# 9.把容器打包成镜像
[root@docker01 ~]# docker commit 7f1f379d73d9 nginx_h5:v1
# 9.1查看镜像
[root@docker01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx_h5 v1 933d92923e95 21 seconds ago 912MB
# 9.2测试-启容器
[root@docker01 ~]# docker run -p 8080:80 -d nginx_h5:v1 /sbin/nginx -g 'daemon off;'
# 9.3浏览器访问
10.0.0.101:8080
# 10.导出镜像
[root@docker01 ~]# docker save nginx_h5:v1 > /tmp/h5.tgz
# 发给其他机器测试
[root@docker01 ~]# scp /tmp/h5.tgz 172.16.1.102:/root
# 11.导入镜像
[root@docker02 ~]# docker load < /root/h5.tgz
# 12.运行容器
[root@docker02 ~]# docker run -p 80:80 -d nginx_h5:v1 /sbin/nginx -g 'daemon off;'
# 13.浏览器访问
10.0.0.102:80
手动制作wordpress镜像
制作一个wordpress的镜像 基础镜像:centos:7
# 1.安装docker
# 2.拉centos:7的镜像(作为基础镜像)
# 3.运行基础容器(去基础镜像里面操作)
[root@docker01 ~]# docker run -it -p 80:80 centos:7 /bin/bash
# 2.换源
[root@ccc7b676aca1 /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@ccc7b676aca1 /]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
-#优化源
[root@ccc7b676aca1 /]# sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
# 3.安装数据库
[root@ccc7b676aca1 /]# yum install -y mariadb-server
# 4.安装nginx_php(拷贝到基础容器里)
[root@docker01 ~]# docker cp nginx_php.tgz ccc7b676aca1:/root
# 5.安装nginx和php
-# 解压nginx_php包
[root@ccc7b676aca1 ~]# tar xf nginx_php.tgz
[root@ccc7b676aca1 ~]# yum localinstall -y *.rpm
# 6.初始化mariadb(这里数据库装的是mariadb-server)
[root@ccc7b676aca1 ~]# /usr/libexec/mariadb-prepare-db-dir %n
# 7.启动数据库(卡在终端没反应,等一会按回车就行,最后可以ps -ef|grep mysql看一下起没起)
[root@ccc7b676aca1 ~]# mysqld_safe --defaults-file=/etc/my.cnf &
# 8.nginx配置文件
cat > /etc/nginx/conf.d/blog.conf << 'EOF'
server {
listen 80;
server_name _;
root /code/wordpress;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
EOF
# 9.启动nginx、php
[root@82cacf5ba5d4 ~]# nginx (重启是nginx -s reload)
[root@82cacf5ba5d4 ~]# php-fpm
-#卡后台(前台运行)
nginx -g 'daemon off;'
/usr/sbin/php-fpm --nodaemonize
# 10.创建站点目录
[root@82cacf5ba5d4 ~]# mkdir /code
# 11.部署代码
[root@ccc7b676aca1 code]# curl -o /code/wordpress-5.0.3-zh_CN.tar.gz
http://test.driverzeng.com/Nginx_Code/wordpress-5.0.3-zh_CN.tar.gz
-#解压wordpress代码包
[root@ccc7b676aca1 code]# tar xf wordpress-5.0.3-zh_CN.tar.gz
-#浏览器访问试试
10.0.0.9
# 12.清理一下用完的包之类的(解压后的代码包可不能清理)
清理过后打的镜像可以小
-删除nginx_php包和解压后的rpm包
[root@82cacf5ba5d4 ~]# rm -fr nginx_php.tgz
[root@82cacf5ba5d4 ~]# rm -fr ./*.rpm
-删除代码包
[root@82cacf5ba5d4 code]# rm -f wordpress-5.0.3-zh_CN.tar.gz
-清理yum.repos.d源
[root@82cacf5ba5d4 code]# cd /etc/yum.repos.d/
[root@82cacf5ba5d4 yum.repos.d]# rm -fr ./*
-清理yum缓存
[root@82cacf5ba5d4 yum.repos.d]# yum clean all
# 13.把服务停掉
[root@82cacf5ba5d4 ~]# nginx -s stop
[root@82cacf5ba5d4 ~]# pkill mysqld
[root@82cacf5ba5d4 ~]# pkill php-fpm
# 14.写一个服务启动脚本
vi /start.sh
#!/bin/bash
/sbin/php-fpm
/sbin/nginx
/bin/mysqld_safe --defaults-file=/etc/my.cnf
-#给服务启动脚本执行权限
chmod +x /start.sh
# 12.打镜像(docker commit 容器ID wp:v1)
[root@docker01 ~]# docker commit ccc7b676aca1 wp:v1
-#起一个测试一下
[root@docker01 ~]# docker run --name wp -p 88:80 -d wp:v1 /bin/sh /start.sh
# 13.浏览器访问
手动打镜像的缺陷
1)不支持环境变量
2)容器启动时,自动启动服务
3)不暴露端口