乐趣区

关于docker:Docker-入门私人笔记三Docker-网络映射和数据卷管理

先温习一下 docker 的基本操作:

1. 应用镜像启动一个容器,并且容器在后盾运行

命令:

docker run -d -P [镜像名]

示例:

docker run -d -P nginx

参数阐明:
-d 是让容器在后盾运行。
-P 是随机的端口映射。命令的执行后果,会返回启动的容器的残缺 ID(64 位数字和字母组成)。示例中,会主动将宿主机的一个随机端口映射到生成的容器中的 80 端口(nginx 的默认端口是 80)。

2. 查看容器日志

命令:

docker logs [容器名或者 ID]

3. 启动容器并设置指定的映射端口

命令:

docker run -d -p [宿主机的端口]:[容器的端口] --name [给新容器指定名称] [镜像名或者 ID]

示例:

docker run -d -p 3333:80 --name nginx-demo nginx

参数阐明:
-p 用来设置指定的映射端口。
做了端口映射之后,通过拜访宿主机 IP+ 映射到宿主机的端口,就能拜访到 docker 中的服务。

4. 查看容器映射了哪些端口

命令:

docker port nginx-demo

5. 启动容器并设置指定的 IP 和映射端口

命令:

docker run -d -p [宿主机 IP]:[宿主机端口]:[容器端口]

阐明:
这个命令实用于宿主机存在多个 IP 地址的状况。

6. 启动容器并指定容器的端口,但不指定宿主机的端口

命令:

docker run -d -p [宿主机 IP]::[容器端口]

阐明:
这个命令实用于宿主机存在多个 IP 地址的状况。

7. 启动容器并指定容器应用的协定

命令:

docker run -d -p [宿主机端口]:[容器端口]:udp

阐明:
-p 默认应用的是 tcp 协定。能够指定应用 udp 协定。

接下来本篇文章要讲的核心内容来了

8. 容器的数据存储

必须晓得的常识: 容器的数据默认都存储在容器的卷外面,如果容器删除,数据也就没有了。

容器技术提供了一种形式,能够将宿主机的卷挂载到容器外面,这样就能够将容器的数据保留到宿主机上。

挂载参数是 -v,有两种应用形式:

【形式一】
-v /data
意思是:将宿主机的某目录挂载到容器的 /data 目录下。如果镜像(或者容器)中默认没有 /data 目录,挂载实现后会主动在容器中创立该目录。
登录容器,查看 /data 的磁盘挂载状况:

问题:
宿主机的哪个卷挂载到容器上了呢?

验证:
先在容器的 /data 目录创立一个文件 hehe。回到宿主机,应用 inspect 命令查看容器的详细信息,在 Mount 这段信息中找到 Source 这个局部。

进入 Source 前面的门路,能够查看到方才创立的文件 hehe。

进入宿主机的目录 /var/lib/docker/volumes/,通常能够看到该目录下有很多卷。每一个与宿主机进行了卷挂载的容器,它挂载的卷都在这个目录下。即 应用命令 docker inspect [容器名] 或 [容器 ID] | grep Source 查到的门路名称与这里的目录名称是能够匹配上的。如下图所示:

论断:
挂载宿主机的卷到容器但不指定具体是哪个卷,这个时候零碎会随机在宿主机的目录 /var/lib/docker/volumes/ 外面找一个卷挂载到容器上。

【形式二】
-v src:dst
意思是:将宿主机的目录 src 挂载到容器的 dst 目录下。这是更好的应用形式。

示例:
-> 在宿主机本地创立一个目录用于挂载给容器:

mkdir /data/docker-volume-nginx

-> 启动容器并挂载方才创立的目录到容器的目录 /data 下:

docker run -d --name nginx-test2 -v /data/docker-volume-nginx/:/data nginx

-> 进入方才创立的目录,在外面创立一个文件 mmm:

touch mmm

-> 登录容器,在 /data 目录中,看到方才在宿主机中创立的目录 mmm:

sh /data/shell/docker_in.sh nginx-test2

具体操作过程如下截图所示:

退出移动版