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
本文来自博客园,作者:kirin(麒麟),转载请注明原文链接:https://www.cnblogs.com/kirin365/articles/16137785.html