9、手动制作docker镜像

版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin

1.制作一个基于centos7系统的nginx镜像(单服务)

1:启动一个纯净的centos:7容器,安装nginx
[root@docker01 ~]#  docker run -d -it -p 80:80 centos:7
[root@docker01 ~]#  docker exec -it bold_feynman /bin/bash
#然后执行以下命令
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install nginx -y
cd /usr/share/nginx/html
rm -f img index.html en-US 
echo oldzhang > index.html

打开网页

2:把安装好服务的容器,提交为镜像
[root@docker01 ~]#  docker container commit bold_feynman centos_nginx:v1

3:测试镜像的功能(如果不加nginx -g ‘'daemon off;'’参数的话nginx是起不来的)
[root@docker01 ~]# docker run -d -p 82:80 centos_nginx:v1 nginx -g 'daemon off;'

4.运行docker imsges查看制作的docker资料包
[root@docker01 ~]# docker images

2.制作一个基于centos7系统的游戏的镜像(多服务)

1:启动一个centos7_nginx_ssh:v2容器
[root@docker01 ~]#  ##执行以下命令:
docker run -it -p 80:80 centos7_nginx_ssh:v2 /bin/bash

2.安装PHP服务软件
yum install php-fpm php-gd php-mbstring -y

3.编辑配置文件,修改管理用户为nginx
vi /etc/php-fpm.d/www.conf

4.启动PHP服务
php-fpm -D

5.进入nginx配置文件目录,
配置Nginx支持PHP
cd /etc/nginx/conf.d/
egrep -v '^$|#' /etc/nginx/nginx.conf.default  >/etc/nginx/nginx.conf
[root@f34ada39c2a1 nginx]#  cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /html;
            index  index.php index.html index.htm;
        }
    location ~ \.php$ {
        root           /html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }
}    
}

6.创建对应的目录,
mkdir /html
cd /html

7.把宿主机上的代码拷贝到容器的/html下面
[root@docker01 ~]#  docker cp 80xiaoyouxi.zip eloquent_galileo:/html

8.安装unzip命令,解压文件,修改属主属组
[root@f34ada39c2a1 html]#   yum install -y unzip
[root@f34ada39c2a1 html]#   unzip kodbox.1.20.zip
[root@f34ada39c2a1 html]#   chown -R nginx:nginx .


9.打开浏览器测试

10.编写启动脚本
[root@f34ada39c2a1 html]#  vi /init.sh
#!bin/bash

nginx
php-fpm -F

11.把已经启动的服务全部kill掉,然后测试脚本
[root@f34ada39c2a1 html]#   pkill php-fpm
[root@f34ada39c2a1 html]#   pkill nginx
[root@f34ada39c2a1 html]#   sh -x /init.sh
#容器夯住的话ctrl+c退不出来的话按ctrl+z

12:把安装好服务的容器,提交为镜像
[root@docker01 ~]#  docker commit f34ada39c2a1 kod:v1

13:测试镜像的功能
[root@docker01 ~]#  docker run -d -p 83:80 youxi:v1  /bin/bash /init.sh

14.打开浏览器重新测试

3.制作一个基于centos7系统的nginx+sshd双服务镜像

9.5.1启动一个基础容器
[root@docker01 ~]#  docker run -it -p 82:80 -p 1024:22 centos:7 /bin/bash
9.5.2.容器中是用不了systemd服务的,不知道怎么手动启动,看下面这个配置文件就知道了
[root@8a8a1af7e458 /]#  cat /usr/lib/systemd/system/nginx.service

9.5.3.在容器中安装正常的服务(因为容器太纯了,很多服务都没有安装)
[root@8a8a1af7e458 /]##执行一下命令!!!
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install nginx -y                   ###安装nginx
yum install openssh-server -y          ###安装openssh服务
yum install initscripts -y               ###安装sshd需要的依赖服务
/usr/sbin/sshd-keygen                ###启动sshd的秘钥
echo '123456'|passwd --stdin root      ###设置容器的密码

#这条命名不执行  
/usr/sbin/sshd -D   
###  -D参数是在前台运行,不加是在后台运行,只有加了-D参数,才能夯住容器
9.5.4.在容器里写一个脚本,实现开机自启nginx与ssh服务,因为在启动容器的时候,只能使用一条命令来夯住容器,这样就会变成2选1了,

[root@c01a210a0fe7 /]# vi /init.sh
[root@c01a210a0fe7 /]# cat /init.sh
#!bin/bash

nginx
/usr/sbin/sshd -D
[root@c01a210a0fe7 /]# sh -x /init.sh 
+ nginx
+ /usr/sbin/sshd -D
[root@c01a210a0fe7 /]# exit
9.5.5.把安装好服务的容器提交为新的镜像

[root@docker01 ~]#  docker container commit 8a8a1af7e458 centos7_nginx_ssh:v2

9.5.5.启动并且测试容器
[root@docker01 ~]# docker run -d -p 82:80 -p 1024:22 centos7_nginx_ssh:v2 /bin/bash /init.sh

posted @ 2022-06-03 10:31  kirin(麒麟)  阅读(316)  评论(0编辑  收藏  举报
Δ