[docker] 05 docker仓库&数据管理&端口映射

Posted allbetter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[docker] 05 docker仓库&数据管理&端口映射相关的知识,希望对你有一定的参考价值。

主要内容:

    一、仓库市场

    二、搭建本地私有仓库

    三、数据卷

    四、数据卷容器

    五、端口映射

    六、容器互联

 

一、仓库市场

 1.1. 官方仓库:https://hub.docker.com/search/?q=&type=image

 1.2. 第三方仓库:包括腾讯云 网易云、阿里云、DaoCloud等

 

二、搭建本地私有仓库

 2.1. 使用resgistry镜像创建私有仓库

docker run -d -p 5000:5000 registry

 

查看ip,修改docker服务启动参数默认使用http访问,在ExecStart增加:

--insecure-registry 192.168.136.137:5000

 技术图片

 

重启docker:

systemctl daemon-reload
systemctl restart docker
//重启本地私有仓库容器,若docker没有配置自动重启容器参数(--restart=on-failure:10),则需要手动重启
docker start sa

 

修改上传镜像的tag,并上传到本地服务器仓库:

docker tag alpine:3.8 192.168.136.137:5000/test
docker push 192.168.136.137:5000/test
//curl -XGET http://192.168.136.137:5000/v2/tag_name/tags/list

技术图片

 

三、数据卷

3.1. 数据卷(Data Volumes)

数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的Mount。

3.2. 创建数据卷(参数可用man docker-volume-create来查看)命令

docker volume create -d local local_volume

 

3.3. 查看数据卷列表

docker volume ls

技术图片

 

3.4. 查看数据卷信息

docker volume inspect local_volume

 技术图片

 

3.5. 删除数据卷

docker volume rm local_volume

 

3.6. 清理无用数据卷

docker volume prune

 

3.7. 绑定数据卷

绑定数据卷用-mount参数,有三种类别:

  - volume:普通数据卷,即通过docker volume create创建的数据卷,非docker是不可以去修改里面的内容的。

  - bind:绑定数据卷,即可以绑定宿主主机指定路径。

  - tmpfs:临时数据卷,只存在于内存中。

绑定数据卷:

mkdir /src
docker run -d -P --mount type=bind,source=/src,destination=/dest nginx

技术图片

 

 

四、数据卷容器

 4.1. 创建数据卷容器,并在容器数据卷中创建文件test_db,在宿主主机数据卷目录下查看:

docker volume create db
docker run -d --mouont source=db,target=/db nginx

技术图片

 

  4.2. 挂载数据卷容器中的数据卷,在新起的容器中查看挂载数据卷的内容:

docker run -d --volumes-from 53 nginx

技术图片

 

 

五、端口映射

 5.1. 从外部访问容器应用

在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的 。如果需要让外部访问这些应用时,则需要通过-P或-p来指定端口映射。

-P和-p的区别:

  -P:Docker会随机映射一个端口到内部容器开放的网络端口。

  -p:可以指定要映射的端口,并可以在指定端口上绑定一个容器。

本地主机的32768端口被映射到了容器的80端口,访问宿主主机的端口即可访问容器内web应用提供的界面:

docker run -d -P nginx

技术图片

 

 5.2. 映射所有接口地址

使用HostPort:ContainerPort格式本地的5427端口映射到容器的5427端口,此时会默认绑定本地所有接口上的所有地址:

docker run -d -p 5427:5427 nginx

技术图片

 

5.3. 映射到指定地址的指定端口

使用IP:HostPort:ContainerPort格式指定映射使用一个特定地址,比如localhost地址127.0.0.1:

docker run -d -p 127.0.0.1::5427

技术图片

 

5.4. 查看映射配置

docker port 4c 5427

技术图片

 

六、容器互联

容器互联是一种让多个容器中的应用相互交互的方式。它会在源和接收容器之间创建连接关系,接收容器可以通过容器名快速访问到源容器,而不用指定具体的IP地址。 

6.1. 使用--link参数可以让容器之间安全地进行交互:

docker run -d --name db training/postgres
docker run -d -P --name web --link db training/webapp

 docker在两个容器之间创建了一个虚机通道,而且不用映射它们的端口到宿主主机上:

技术图片

 

6.2. 查看容器公开的连接信息:

技术图片

 

6.3. 在容器中安装ping命令来测试容器的连通:

apt-get install -yqq inetutils-ping

 

 

其它参考:

Docker 持久存储介绍(十三):https://blog.51cto.com/wzlinux/2047637

以上是关于[docker] 05 docker仓库&数据管理&端口映射的主要内容,如果未能解决你的问题,请参考以下文章

05-Docker仓库

Docker第二章:docker基础1--镜像,容器&仓库

docker私有仓库(认证功能)

黑马四Docker服务编排 & Docker私有仓库

黑马四Docker服务编排 & Docker私有仓库

Docker部署私有仓库(registry&Harbor)