[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

这将解决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 PQ,然后返回到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的服务器端/后端开发和链接开发,用于大规模,高度加载的游戏,应用程序和数字内容。

如果您在开发项目方面遇到麻烦,请访问下面的网站。

●Web系统开发
●服务器端开发(API/DB)

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
1,314
X Facebook 哈特纳书签 口袋
[网络研讨会] 多云入门:哪种云最适合您的业务?获取八大主流云的最新资讯!

[网络研讨会] 多云入门:哪种云最适合您的业务?获取八大主流云的最新资讯!

[网络研讨会]从操作结构到特定步骤!云服务器操作和维护的完整概述

[网络研讨会]从操作结构到特定步骤!云服务器操作和维护的完整概述

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。