手动制作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