手动制作镜像
  DcpJeOZ6VzTX 2023年11月13日 13 0

手动制作一个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)不暴露端口

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Docker自动构建镜像 下一篇: Docker容器操作
  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读