Docker学习笔记(一):使用docker搭建LNMP环境

公司使用docker部署服务器环境,之前没有接触过,于是使用阿里云服务器学习使用docker,记录一下学习过程。

首先了解Docker,查看了很多网上的资料,说下自己的理解,docker与linux虚拟机类似,是一个用来把打包好的环境镜像放在容器中运行的工具(引擎),docker的好处是更加轻量级,性能开销极小。比如想要在一台新的linux机器上面运行PHP程序,我们需要在该机器上依次安装nginx/apach,php,mysql。这时我需要复用该环境到第二台机器上,则需要重新安装以上软件,而且还需要考虑这两台机器本身的linux系统的差异。此时我可以将第一台机器上部署好的PHP环境打包生成一个镜像,在第二台机器上用docker拉取使用该镜像,让机器二上的PHP程序在该镜像生成的容器中运行,该镜像即可很方便的复用在更多的linux机器上而不需要担心环境问题。

下面是docker的官方定义(参考菜鸟教程docker文档):

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

首先安装docker,centos的官方发行版本从6.5以上就内核支持docker了,可以直接运行以下命令完成安装。

*我的测试环境是阿里云官方的centos7.4镜像(后续访问中要注意本地环境与线上环境的区别),非root账户在命令前加sudo。

#yum -y install docker-io
安装完成后启用docker服务,可运行

#service docker start

安装启动完成后运行hello-world检测是否成功

#docker run hello-world

*hello-world是官方提供的测试镜像。在运行该命令时,docker将会做如下操作:首先检测本地是否有一个叫hello-world的镜像文件,如果没有,则从docker-hub(类似与github的的管理仓库)上查找名为hello-world的镜像,若存在则下载到本地,若不存在,则返回找不到镜像的错误。拿到镜像之后使用它创造一个容器(container),然后运行容器,得到结果,docker容器的特性是如果该容器运行的镜像中没有可执行的服务,则使用后会立刻关闭该容器。

Docker学习笔记(一):使用docker搭建LNMP环境_第1张图片

镜像文件可以直接使用dockerhub上别人已经建立好的镜像,也可以自己创建一个新的镜像使用。初学直接使用别人造好的轮子就好。

查找mysql和php-fpm的镜像文件,docker search mysql和docker search php

Docker学习笔记(一):使用docker搭建LNMP环境_第2张图片


Docker学习笔记(一):使用docker搭建LNMP环境_第3张图片

搜索出的镜像文件可以直接使用 -d表示后台运行;-i标志保证容器中的STDIN是开启的;-t表示为创建的容器分配一个伪tty终端,进入可查看和修改容器内容;镜像名称后面的冒号表示选取镜像版本;-P表示端口对应,格式为宿主机端口:容器端口;--link表示容器之间相关联,下面的例子表示可以直接在my-lnmp容器中访问my-mysql容器中的内容;-e表示设置环境变量;-v表示挂载目录,格式为宿主文件或目录:容器内文件或目录,文件或目录挂载后,可以在宿主机上传文件,对应的容器内部环境运行时,会运行对应挂载的文件或目录。

#docker run -P 3306:3306 --name my-mysql  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
#docker run -P 80:80 --name my-lnmp -v mywwwpath:/var/www/html -d richarvey/nginx-php-fpm --link mysql:db

*需要注意镜像中的文件目录,可以在nginx配置文件中查找和修改对应目录。

*镜像拉取pull可以省略,docker会自动拉取本地不存在的镜像,docker images可查看本地镜像列表。

一些常用容器操作命令:

查看当前运行的容器
#docker ps
查看当前未运行的容器
#docker ps -l
查看所有操作过的容器
#docker ps -a
启动/关闭/重启容器
#docker start/stop/restart container-name
进入容器内部
#docker exec -idt container-name /bin/bash
删除容器
#docker rm container-name
查看容器信息
#docker inspect container-name

使用docker ps查看容器状态,确保容器运行后,测试环境部署状态,在设置挂载目录mywwwpath下新建php文件index.php

close(); 
    echo phpinfo();
?>
*访问ip地址可直接运行php文件,返回熟悉的phpinfo界面。需要注意端口开放,测试环境中的阿里云控制台需设置端口访问规则打开80端口。


你可能感兴趣的:(Docker学习笔记(一):使用docker搭建LNMP环境)