Docker简单实践

记录一点使用Docker的步骤。这应该算不上教程,纯粹就是为了方便日后查阅所写的操作记录。

创建容器时挂载目录

例如,我们要创建一个运行有nginx的静态网站容器(不含PHP等动态页面),但我们希望可以将本机上的一个文件夹挂载到容器内,方便容器上的应用程序使用。例如,我们在/container_files目录下,有两个文件夹confwww,其中conf文件夹里有nginx的配置文件,而www文件夹中有一个网站的静态网页文件(一堆HTML),我们希望配置一个nginx容器,使得提供对www文件夹中网站的访问。

此时,我们需要使用到-v参数。

准备文件

我们以上面所述的例子进行示例。下面的文件名和文件夹名称是什么都无所谓,只要在后面对号入座即可。

首先,先在www文件夹中放置好要访问的网站文件,如index.html等。

接着,我们在conf文件夹中,编写一个nginx的配置文件,例如文件名是myserver.conf,主要是在nginx中创建一个虚拟服务器。文件内容参考如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
# Any port on the container you want to listen to.
listen 8081;

# Unnecessary.
server_name _;

# Simple location block for /
location / {

# Replace with the path in container,
# which points to the web files you mounted.
root /myweb;

index index.html;
}
}

这里server监听的端口是容器所监听的端口,稍微把容器想象成一个虚拟机,这个端口和本机上的端口不同,是随你选择的。但要注意,nginx容器默认的server监听了80端口,为了方便起见可以避开这个端口。

记得将root的路径(网站根目录),修改成你(将要)在容器中,挂载存有你的网站文件的目录。这里,我们计划将本机的www文件夹,挂载到容器根目录下的myweb路径上,因此我们在root后面写/myweb

创建容器

使用如下命令创建容器。

1
sudo docker run -d --name nginx-test1 -p 61080:8081 -v /container_files/www:/myweb -v /container_files/conf:/etc/nginx/conf.d nginx

我们看看上面命令的含义。

首先,-d参数代表在后台运行该容器。

--name nginx-test1表示我们将该容器命名为nginx-test1,名字是你自己起的,以方便操作作为首要目标。

-p 61080:8081,将本机的61080端口映射到容器的8081端口,即访问本机的61080端口,就相当于访问了容器的8081端口。8081是上面你在server中选择的端口。

-v /container_files/www:/myweb,将本机的/container_files/www路径,映射到容器中的/myweb路径,即在容器中访问/myweb路径,就可以访问本机/container_files/www路径下的文件。其作用是,将保存在本机/container_files/www下的网站文件提供给容器,方便容器访问。

-v /container_files/conf:/etc/nginx/conf.d,和上述类似,是将本机/container_files/conf:中的nginx配置文件提供给容器,使得容器按照里面的配置文件,创建虚拟服务器。

nginx指定了运行本容器采用的镜像为nginx镜像。

运行之后

浏览器HTTP访问本机的61080端口(和上面映射的本机端口相同),即可访问目标网站。


这个文章没有系统的介绍,边用边学边更新。