docker简单操作&安装Apache和php
docker
-
docker可以让开发者打包他们的应用、服务程序到一个轻量级、可移植的容器中,然后发布。理解成镜像是类,容器是实例对象。docker镜像是用于创建docker容器的模板,容器是独立运行的一个或者一组应用。我们下载一个Ubuntu的docker镜像,里边只有很精简的内容供启动等简单的功能,我们需要按照需求打造容器,重新打包成一个功能更多的镜像。
-
注:本文并不是针对web上或者运维的docker使用,只是复现漏洞时需要使用docker知识,在此简介,同时方便复习
常用命令
-
docker下安装Ubuntu镜像
docker pull ubuntu (若不指定Ubuntu版本则默认下载最新)
-
管理使用本地主机镜像
docker images
-
运行容器
docker run -i -t 2ce2211f2d5 /bin/bash
注:这样可以启动一个容器并开启一个伪终端,若加上 -d 参数则在后台同时开启该容器
-
加-d 是不会开启一个伪终端的,若想开启伪终端进行交互,则需使用exec 命令
使用exec 加的是容器ID,而用run方式开启伪终端加的是镜像ID,先有run才有exec
那么为什么不能再次用 -i -t 开启一个伪终端呢?如下,若再次用 -i -t 参数开启伪终端,使用ps命令查看只有一个运行容器,但是用 docker ps -a 查看所有容器,会出现两个镜像ID相同,容器ID不同的容器,如果主机映射了Apache端口,那么是不会找到对应的服务的,产生错误。
综上,要么docker run -i -t 直接开启伪终端(这样退出容器后,就不会在后台运行,若想进入容器,需要docker start +容器ID,然后docker exec -i -t 容器ID /bin/bash 开启伪终端,建立交互),要么就加-d参数,这样退出容器,后台依然运行容器,无需start即可exec进入容器,建立交互
-
-
删除容器,删除镜像命令(删除容器需要先docker stop停止容器运行)
删除容器:docker rm 容器ID
删除镜像:docker rmi 镜像ID
可以一次删除多个容器、镜像,ID号之间空格分隔
搭建Apache+php7.2
注:以下所有步骤在上边完成,并进入容器内进行
-
先更新软件
apt-get update
-
安装Apache2
apt-get install apache2
-
装php7.2
apt-get install php7.2
-
关联Apache与php(这样启动Apache服务同时就能启动php服务了)
apt-get install libapache2-mod-php7.2
-
启动Apache2服务
service apache2 start
-
查看Apache服务状态
service apache2 status
保存为镜像
注:若不将下载的好的服务,配置保存,下次进入就没了(全是泪。。。)
-
退出容器
exit
-
停止运行容器(若不停止容器就打包,可能会成功,但最后某一次(比如隔一天)访问Apache时一定会失败!!!)
docker stop 容器ID(若是直接docker run -i -t 开启容器,则不需要这步)
-
打包为新镜像
docker commit -a "kill" -m "my apache" 容器ID apache/php7.2:v1.0 -a:镜像作者 -m:镜像说明 最后边为自己命名的镜像名
如此大功告成,外网想要访问Apache,只需将映射主机端口,进入容器,开启服务即可,Nginx安装大同小异
-
命令汇总
docker pull ubuntu 下载Ubuntu镜像 docker images 查看本地所有镜像 docker ps 查看运行中的容器 docker ps -a 显示所有容器,包括未运行的 docker rm 容器ID 删除停止运行的容器 docker rmi 镜像ID 删除镜像 docker run -i -t 镜像ID /bin/bash 开启容器并创建伪终端(退出容器,后台不运行) docker exec -i -t 容器ID /bin/bash 创建伪终端(前提是用 docker run -i -t -d开启的容器,退出容器,后台运行) apt-get update 更新 apt-get install apache2 安装Apache2 apt-get install php7.2 安装php7.2 apt-get install libapache2-mod-php7.2 关联Apache和php service apache2 start 启动服务 service apache2 status 查看服务状态 exit 退出容器 docker stop 容器ID 停止运行容器(开启后台运行的情况下) docker commit -a "kill" -m "my apache" 容器ID apache/php7.2:v1.0 打包成新镜像 docker run -i -t -p 90:80 镜像ID /bin/bash 映射端口并开启容器进行交互 接下来开启服务