1.Docker基础镜像:提供基础应用型的Docker软件服务(例如:nginx,php,jdk等),所以dockerhub镜像,公有镜像,自定义私有镜像都可以理解为基础镜像。
2.Docker业务镜像:将Gitlab上的源代码,或通过maven打出来的jar或tar包,添加至基础镜像中,通过构建打包成的Docker业务镜像。(Dockerfile业务镜像是通过构建生成,我会在后面的章节讲解)
我在对wordpress进行容器化时先要制作Docker基础镜像
commit和dockerfile方式
这里我讲解commit方式且提交至远程仓库步骤如下:
1.安装docker软件(yum install docker或apt-get install docker)
2.下载docker centos镜像(docker pull)
3.创建并进入容器(docker run)
4.nginx docker基础镜像制作
5.将容器提交docker基础镜像(docker commit)
6.php docker基础镜像制作
安装说明:建议系统是centos且版本号必须不小于7.0。
# cat /etc/redhat-release //查看系统版本号,我的是centos 7.5.1804
CentOS Linux release 7.5.1804 (Core)
# yum install docker -y //安装docker软件
# systemctl start dockerd //启动docker服务
# systemctl status dockerd //查看docker状态,返回active (running)说明成功。
下载说明:通过docker pull命令去公网仓库下载docker镜像。
# docker pull centos:7.5.1804 //下载centos:7.5.1804 docker镜像
# docker images //查看docker 镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.5.1804 cf49811e3cdb 4 months ago 200MB
REPOSITORY是仓库名,TAG 是标签,IMAGE ID是镜像ID,CREATED是镜像创建到至今的时间,SIZE是镜像大小
容器创建说明:通过 docker run -it centos:7.5.1804 /bin/bash 命令创建容器,-i: 以交互模式运行容器,通常与 -t 同时使用;-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;centos:7.5.1804 使用的本地镜像名称;/bin/bash 容器创建后运行的命令。
# docker run -it centos:7.5.1804 /bin/bash //创建并进入容器,可以看到容器ID为52afa115ec6d。
[root@52afa115ec6d /]#
[root@52afa115ec6d /]# yum install epel-release -y //在容器里面安装epel源和nginx
[root@52afa115ec6d /]# yum install nginx net-tools -y
[root@52afa115ec6d /]# vi /etc/nginx/nginx.conf //修改nginx配置文件,日志路径可跟进自身需求设置
1.将user nginx;修改成user root; (容器中nginx 要以root用户运行)
2.添加daemon off; (nginx和php等应用型软件安装在容器里面,必须要已守护进程的方式运行)
3.设置worker_processes参数为auto
4.设置access_log对应的路径为/data/logs/nginx/access.log
配置文件如下
[root@52afa115ec6d /]# vi /etc/nginx/conf.d/localhost.conf //日志路径可跟进自身需求设置
添加localhost.conf配置文件
1.设置为nginx 80端口启动
2.server_name为wordpress.tencent.com localhost; (wordpress.tencent.com是wordpress的访问域名,根据业务需求设置)
3.error_log对应路径为/data/logs/nginx/wordpress.tencent.com_error.log
4.wordpress网站根目录是/data/www/wordpress(这个目录暂时不创建,之后会讲解制作Docker业务镜像将源码添加至/data/www/wordpress目录)
5.设置fastcgi_pass unix:/dev/shm/php-fpm.sock; (以nginx和php-fpm 使用uninx socket通信)
[root@52afa115ec6d /]# mkdir /data/logs/nginx -p //创建nginx日志目录
# docker ps -a | grep 52afa115ec6d //在宿主机新开终端,查看运行的容器ID。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52afa115ec6d centos:7.5.1804 "/bin/bash" 9 minutes ago Up 9 minutes reverent_shaw
CONTAINER ID是容器ID,IMAGE是使用的镜像,COMMAND是容器启动运行的命令,CREATED是容器创建到运行至今时间,STATUS是容器当前的状态,PORTS是容器运行的端口,NAMES是容器的名称。
# docker commit 52afa115ec6d test:v1 //通过docker commit命令将容器提交成本地镜像。test是名称,v1是标签
sha256:10e6b0f81fb79b20e603ea12f67f835cc5bff11b629cc706b4c9ce0b48594fd3
# docker images | grep test //查看本地test:v1镜像
1.首先利用docker run启动一个centos容器 (参考步骤3)
2.在容器中进行php的安装和配置
# yum install epel-release -y
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install php70w php70w-fpm php70w-cli php70w-common php70w-devel php70w-gd php70w-pdo php70w-mysql php70w-mbstring php70w-bcmath php70w-xml php70w-pecl-redis php70w-process php70w-intl php70w-xmlrpc php70w-soap php70w-ldap php70w-opcache -y //安装php-fpm及扩展
# vi /etc/php-fpm.conf
error_log = /data/logs/php/error.log //替换路径
daemonize = no //设置php-fpm已守护进行方式运行
# vi /etc/php-fpm.d/www.conf //日志路径可跟进自身需求设置
user = root //将user = apache修改成user = root
group = root //将group = apache修改成group = root
listen = /dev/shm/php-fpm.sock //将listen = 127.0.0.1:9000 修改成 listen = /dev/shm/php-fpm.sock
listen.owner = root //将listen.owner = user修改成listen.owner = root
listen.group = user //将listen.group = user修改成listen.group = root
slowlog = /data/logs/php/www-slow.log //设置slow日志路径为/data/logs/php
php_admin_value[error_log] = /data/logs/php/www-error.log //设置error日志路径为/data/logs/php
# mkdir /data/logs/php -p //创建php日志目录
3.最后通过commit命令提交成本地镜像,请参考上面第5步(将容器提交成docker基础镜像)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。