这将解决PHP版本升级!复制和粘贴入门码头
目录
你好。
我是Mandai,负责Wild 开发团队。
PHP7发布已经有一段时间了,但是小更新仍然频繁发生,
所以决定何时更换PHP是一个非常重要的问题。
频繁的更新是一种痛苦。
但我想使用最新版本。
有时会这样的码头人怎么样
在这些时代,有一个官方Docker映像的图像,因此我认为您必须至少尝试一次。
它带有复制和粘贴命令,会让您想尝试一下!
Docker设置
准备工作服务器进行工作
因此,这次我想使用Vagrant和VirtualBox准备Ubuntu Server 15.10并在此基础上使用Docker播放(Windows的命令也相同)
# 创建适当的目录 mkdir ubuntu1510 cd ubuntu1510 vagrant init boxcutter/ubuntu1510 vagrant up --provider virtualbox #--根据需要更改提供程序。
安装docker
基本上,该工作与 https://docs.docker.com/engine/installation/ubuntulinux/ 中列出的工作相同。
从现在开始,我们将在 Ubuntu 中继续进行工作。
获取 GPG 密钥
vagrant@vagrant:~$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
添加 apt 存储库
vagrant@vagrant:~$ echo "deb https://apt.dockerproject.org/repo ubuntu-wily main" | sudo tee /etc/apt/sources.list.d/docker.list
更新 apt 存储库
vagrant@vagrant:~$ sudo apt-get update
清除不必要的 apt 包
vagrant@vagrant:~$ sudo apt-get purge lxc-docker
安装 linux-image-extra
vagrant@vagrant:~$ sudo apt-get install linux-image-extra-$(uname -r)
安装泊坞窗
vagrant@vagrant:~$ sudo apt-get install docker-engine
将vagrant用户添加到docker组
vagrant@vagrant:~$ sudo usermod -aG docker vagrant # 如果不添加,运行 docker 需要 sudo # 除了验证环境之外,总是使用 sudo 运行似乎更安全
快速搭建PHP7.0.2环境
vagrant@vagrant:~$ docker pull php:7.0.2-apache # 这次选择可以在apache环境下执行的PHP
各种下载完成后,检查docker是否能识别。
vagrant@vagrant:~$ docker images 存储库标签 创建的图像 ID 虚拟大小 php 7.0.2-apache 797e8c22cdde 6 天前 521 MB
尝试运行导入的docker镜像
vagrant@vagrant:~/docker_php7$ docker run php:7.0.2-apache AH00558: apache2: 无法可靠地确定服务器的完全限定域名,使用 172.17.0.2 全局设置“ServerName”指令以抑制此消息 AH00558: apache2:无法可靠地确定服务器的完全限定域名,请使用 172.17.0.2 全局设置“ServerName”指令来抑制此消息 [Tue Feb 16 08:19:41.424790 2016] [mpm_prefork:notice] [pid 1] AH00163 : Apache/2.4.10 (Debian) PHP/7.0.2 配置 -- 恢复正常操作 [Tue Feb 16 08:19:41.426135 2016] [core:notice] [pid 1] AH00094: 命令行: 'apache2 -D FOREGROUND '
它似乎工作正常,但Ctrl + z,并且它不再接受输入,所以Ctrl + c来停止它。
在后台运行 docker 镜像
除了 apache 正在运行这一事实之外,我不知道发生了什么,所以我将尝试在后台运行较早的 docker 映像。
docker run -d php:7.0.2-apache
让我们使用 docker ps 命令检查它是如何工作的。
vagrant@vagrant:〜$ docker ps容器id image命令命令创建状态端口名称5CCE300A61E5 php:7.0.2-apache“ apache2-foreground” 8秒前UP 6秒0.0.0.0.0:80-> 80-> 80/tcp small_lovelace
目前,我已经确认它正在移动。我很兴奋。
我什么都没做。 。 。
查看docker容器内部
让我们看一下正在运行的 docker 容器的内部,看看它有哪些设置。
让我们停止之前在后台启动的 docker 容器。
要停止正在运行的 docker 容器,请使用 docker stop 命令。
vagrant@vagrant:~$ docker stop 5cce300a61e5 5cce300a61e5
使用Docker PS时,5CCE300A61E5是容器ID。我较早输入所有ID,但是如果仅运行一个Docker容器,您也可以停止具有匹配ID的容器,即使它是不完整的字符串,例如Docker Stop 5cc。
启动该容器ID是唯一的,因此,如果您在其他环境中运行它,它将获得不同的容器ID。
要查看 docker 容器的内容,请在运行 docker run 时指定 i 和 t 选项,您将能够看到容器内部。
启动docker镜像的命令如下。
docker run -it php:7.0.2-apache /bin/bash
提示符号已更改如下。
root@ac4e7280d147:/var/www/html#
使用 ps 命令检查当前正在运行的进程。
root@b679b610fdae:/etc/apache2# ps aux 用户 pid %cpu %mEM vsz rss 时间命令 root 1 0.0 0.0 0.0 T 113 0.0 0.0 17500 2068? R+ 18:01 0:00 ps aux
它似乎没有任何动作。
您可以看到容器中的过程与主机OS分离。
现在,尝试启动Apache。
root@b679b610fdae:/etc/apache2# /etc/init.d/apache2 start [...] 正在启动 Web 服务器:apache2AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 172.17.0.2 设置。 'ServerName' 指令全局抑制此消息 ok # 使用 ps 命令检查 apache 进程 root@b679b610fdae:/etc/apache2# ps auxf USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 20248 3320 ss 17:56 0:00 /bin/bash root 130 0.0 0.3 166704 15264 ?ss 18:02 0:00 /usr/sbin/apache2 -k 启动 www-data 133 0.0 0.2 166728 8548 ? 00 _ /usr/sbin/apache2 -k 启动 www-data 134 0.0 0.2 166728 8548 ? S 18:02 0:00 _ /usr/sbin/apache2 -k 启动 www-data 135 0.0 0.2 166728 8548 ? 0 :00 _ /usr/sbin/apache2 -k 启动 www-data 136 0.0 0.2 166728 8548 ? S 18:02 0:00 _ /usr/sbin/apache2 -k 启动 www-data 137 0.0 0.2 166728 8548 ? : 02 0:00 _ /usr/sbin/apache2 -k 启动 root 188 0.0 0.0 17496 2104 ? R+ 18:42 0:00 ps auxf
它似乎正在安全运行。
有趣的是,我正在使用的Docker映像随着卷发而随附,因此我将尝试使用它来查看是否可以在Docker容器中与HTTP进行通信。
#准备响应root@b679b610fdae的数据:/etc/apache2#echo“ hogehoge test”>/var/www/html/index.html root@b679b610fdae:/etc/etc/etc/etc/etp/etpache2
我通常从内部apache看到了响应返回。
我想从外部来源访问它,但是在当前状态下,无法从外部连接到该码头容器,因此退出后我将退出容器。
尝试将 docker 容器端口映射到主机操作系统
我们将再次启动docker容器,但此时,作为测试,我们将添加设置以将docker容器中的端口80映射到主机操作系统的端口8080并启动docker容器。
vagrant@vagrant:~$ docker run -it -p 8080:80 php:7.0.2-apache /bin/bash # -p 8080:80 将主机操作系统中的数字 8080 端口映射到 docker 容器中的数字 80。
启动后,使用 ps 命令检查 apache 进程。
root@949dd89c3341:/var/www/html# ps auxf 用户 PID %CPU %MEM VSZ RSS TTY STAT 启动时间命令 root 1 0.0 0.0 20248 3296 ?Ss 19:09 0:00 /bin/bash root 57 0.0 0.0 17496 2068 R+ 19:12 0:00 ps 辅助
Apache没有运行。
实际上,这是Docker容器的重要属性,每次运行Docker时,都会从原始Docker Image创建一个容器(以下简称PHP:7.0.2-apache)。
因此,将文件放在/var/www/html/index.html之后,我的工作仍保留。
Docker运行后,开始时的状态将始终相同。
这需要您每次执行常规任务(在这种情况下,启动Apache并创建index.html)。
如果您将其用于全面开发,则不可能只启动Apache并将文件传输到容器中。
甚至标准程序随时间变化。
为此,我们将自动执行启动过程中的过程,并在完成过程中创建一个docker映像,但我们计划下次执行此操作。
首先,这一次,我们将手动启动apache并放置内容。
root@949DD89C3341:/ var/www/html#echo“ hogehoge test”>/var/www/html/html/index.html root@949dd89c3341:/var/var/var/www/www/www/www/html#
现在,为了从外部访问Docker容器,您将退出Docker容器并返回到主机OS。
此操作称为分离,并提供了快捷键。
如前所述,当您输入退出命令时,Docker容器本身将停止,因此
现在您将按CTRL P → Q,然后返回到Ubuntu终端。
root@949dd89c3341:/var/www/html# # 这种状态下按Ctrl+P,Q root@949dd89c3341:/var/www/html# vagrant@vagrant:~$
实际上,它保持运行。
顺便说一句,如何再次返回Docker容器
vagrant@vagrant:~$ docker Attach 949dd
假设。分离是当您从容器返回到主机OS时,相反的是附件。
949DD是当前正在运行的Docker容器的容器ID的一部分。
现在,让我们使用 ubuntu 中的 curl 向端口 8080 发送请求。
vagrant@vagrant:~$curl http://localhost:8080 hogehoge 测试
数据被安全返回。
顺便说一句,要查看主机OS上的哪些端口已映射到,您可以通过参考主机OS上的Iptables看到。
可以使用IP命令或IPTABLES命令检查网络设置,从而易于理解。
PHP 也可以工作吗?
我这次使用的docker镜像是PHP 7.0.2的docker镜像,这是撰写本文时的最新版本。本来是想检查PHP的运行情况,所以就做一个简单的运行检查。
将其附加到之前的 docker 容器。
vagrant@vagrant:~$ docker Attach 949dd
接下来,让我们运行一些检查 PHP 操作时标准的东西。
root@949DD89C3341:/var/www/html#echo“ <?php phpinfo();” >/var/www/html/info.php
如果 PHP 信息流向控制台,则 PHP 工作正常,没有任何问题。
嗯,我想这就是docker的起跑线。
下次,我想谈谈 Dockerfile、目录共享和 docker 容器提交。
就是这样。
如果您想咨询开发专业人员
在《超越》中,我们将富裕的往绩,技术和专有技术结合在系统开发中,迄今为止,我们已经使用OSS技术和云技术(例如AWS)来创建具有可靠质量和出色成本性能的Web系统的合同开发。
我们还使用Web系统/应用基础架构的构建和操作的技术和专业知识来研究自己API的服务器端/后端开发和链接开发,用于大规模,高度加载的游戏,应用程序和数字内容。
如果您在开发项目方面遇到麻烦,请访问下面的网站。