手动制作docker镜像

手动制作docker镜像(单个服务)的流程
1、启动一个纯净的容器 ,在容器中安装服务
2、把安装好服务的容器提交为镜像
3、测试镜像

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

1:启动一个纯净的centos:6.9容器,安装nginx

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install nginx -y

2:把安装好服务的容器,提交为镜像

docker container commit eb109f194821 centos6.9_nginx:v1


3:测试镜像的功能

docker run -d  -p 82:80 centos6.9_nginx:v1 nginx -g 'daemon off;'
 
 
 curl -I  10.0.0.11:82
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Wed, 27 May 2020 02:26:26 GMT
Content-Type: text/html
Content-Length: 3698
Last-Modified: Tue, 07 May 2019 06:09:40 GMT
Connection: keep-alive
ETag: "5cd12124-e72"
Accept-Ranges: bytes

手动做的镜像不能修改初始命令 自动的可以修改

手动制作镜像(双服务)
启动一个已经安装nginx的容器 安装ssh
1、启动一个nginx基础容器

docker  run -it  -p 88:80  -p 1022:22 centos6.9_nginx:v1 /bin/bash
yum install -y  openssh-server 
service sshd restart
echo '123456'|passwd  --stdin root

指定进程 不会秒死

docker run -d  -it  -p 89:80 -p 1022:22 centos6.9_nginx_ssh:v2

进入容器之后
启动双服务

[root@b464d8664f20 /]# /etc/init.d/sshd start
Starting sshd:                                             [  OK  ]
[root@b464d8664f20 /]# nginx

在制作镜像之前
写一个脚本

[root@1b8dfe535159 ~]# cat /init.sh
#!/bin/bash
/etc/init.d/sshd  start
nginx -g 'daemon  off;'

并授权可执行

chmod  +x   /init.sh

执行尝试一下

没有问题 退出 制作镜像

[root@docker01 ~]# docker container  commit d063154e7962 lsy_test:v1
sha256:715c718400b2b33abaf2b03fe853aad6856c87e6d9edafb6da2d53270afab108
[root@docker01 ~]# docker rm -f `docker ps -a -q`
d063154e7962

运行镜像 启动容器

[root@docker01 ~]# docker run -d -p 90:80 -p 1024:22  lsy_test:v1   /init.sh
1b8dfe535159c05abac6551b21a4ed0e9512c511874b87af191fbd63175f1d31
[root@docker01 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                      NAMES
1b8dfe535159        lsy_test:v1         "/init.sh"          6 seconds ago       Up 4 seconds        0.0.0.0:1024->22/tcp, 0.0.0.0:90->80/tcp   hungry_lamarr
[root@docker01 ~]# ssh  [email protected] -p 1024  测试
[email protected]'s password:
Last login: Wed May 27 03:17:32 2020 from 10.0.0.11 
[root@1b8dfe535159 ~]# exit
logout
Connection to 10.0.0.11 closed.
 测试
[root@docker01 ~]# curl  -I  10.0.0.11:90
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Wed, 27 May 2020 03:22:29 GMT
Content-Type: text/html
Content-Length: 3698
Last-Modified: Tue, 07 May 2019 06:09:40 GMT
Connection: keep-alive
ETag: "5cd12124-e72"
Accept-Ranges: bytes

docker 共用宿主机内核 直接启动自己的服务 不走开机启动流程
容器的初始命令只能执行一条

部署有道云盘并制作镜像
注释:有道云网盘不需要后端数据库服务

制作一个kodexplorer镜像(nginx+php)
1:启动一个基础环境的容器,在容器中安装服务

docker run -it -p 80:80 centos6.9_nginx:v1 /bin/bash
yum install php-fpm php-gd php-mbstring -y

修改PHP配置文件

vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx

写入nginx配置文件

vi /etc/nginx/conf.d/default.conf
server {
    listen 80;
    server_name localhost;
    root /code;
    location / {
        index index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
    }
}

创建站点目录

mkdir /code

宿主机操作:将本地的有道代码文件放入到容器中

docker cp kodexplorer4.40.zip f12048d09d53:/code

解压并授权

yum install unzip -y
unzip kodexplorer4.40.zip
chown -R nginx:ngin

编写一个自动启动脚本

vi /init.sh
#!/bin/bash

service php-fpm start
nginx -g 'daemon off;'

2:把安装好服务的容器提交为镜像

docker commit f12048d09d53 kod:v1

3:测试docker run

docker run -d -p 81:80 kod:v1 /bin/bash /init.sh

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章