docker篇---docker network连接自定义镜像和mongo镜像

1. 创建自定义镜像

1.1 Dockerfile文件

FROM pytorch/pytorch:1.9.0-cuda11.1-cudnn8-runtime

MAINTAINER yyq

ENV DEBIAN_FRONTEND=noninteractive
#更新pip,并且换源
RUN pip install pip -U # 升级pip到最新版本
RUN pip install scrapy -i https://pypi.mirrors.ustc.edu.cn/simple/

#为了运行apt-get update
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak
COPY sources.list /etc/apt/sources.list
RUN chmod a+x /etc/apt/sources.list

#更新apt
RUN apt-get update
#安装依赖
RUN apt-get install gcc -y && apt-get install make -y \
		&& apt-get install vim -y && apt-get install openssl -y \
		&& apt-get install libssl-dev -y && apt-get install python3-pip -y

RUN apt-get install vim ffmpeg libsm6 libxext6 cron openssh-server -y
RUN pip install aio-pika==7.1.0 asyncio==3.4.3 APScheduler==3.7.0 matplotlib==3.3.4 opencv-python==4.5.2.52 Pillow==8.2.0 pika==1.2.0 pymongo==3.11.4 requests==2.25.1

# /usr/share/zoneinfo/Asia/Shanghai 可能会没有权限,需要拷贝到当前Dockerfile同级目录
COPY Shanghai /etc/localtime
RUN echo 'Asia/Shanghai'>/etc/timezone

RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/'  /etc/ssh/sshd_config
RUN sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config
RUN echo "root:123456" | chpasswd

RUN echo  "alias ll='ls -l'" >> ~/.bash_profile
RUN /bin/bash -c 'source  ~/.bash_profile;'

CMD [""]

1.2. 相关文件下载提供

链接: 文件连接 提取码: a8f6
在这里插入图片描述## 生成镜像

docker build -t py_11.1 .

镜像开始生成
在这里插入图片描述
镜像成功生成
在这里插入图片描述在这里插入图片描述

1.3 拉取mongo镜像

在这里插入图片描述
这里已经拉取过了。。。

由于要创建自定义镜像和mongo镜像 分别生成的容器之间相互关联,我用的是docker network

2. docker network

通过docker network指令,可以方便的管理docker服务器上的网络

docker network inspect			 # 根据网络的ID展示网络的详细信息
docker network ls				 # 展示所有的网络,以列表形式
docker network create			 # 创建一个自定义网络
docker network connect			 # 连接一个容器到指定网络上
docker network disconnect 		 # 让一个容器从指定网络上断开
docker network prune			 # 删除所有未使用的网络
docker network rm 				 # 根据网络的ID,删除一个或多个网络

2.1自定义网络

  1. 自动DNS解析容器名称到IP地址,例如我们连接mongo服务器时,可以通过容器名:端口的形式,拼接url
  2. 方便管理,在同一网络下的主机可以相互连通

2.2自定义网络(案例)

创建一个自定义网络,subnet参数指定网络的范围以及网络前缀,--bridge指定网络的类型,--gateway指定当前网络的网关地址

首先查看原有的网络

docker network ls

在这里插入图片描述
创建自定义网络

docker network create lcgnet

在这里插入图片描述
查看网络详情

docker network inspect lcgnet

在这里插入图片描述
启动一个mongo服务器,通过–network在启动时连接至自定义网络-

docker run -itd --name mongo -p 27019:27017 --network lcgnet --network-alias lcgsky1 mongo:3.4 --auth

参数说明:

-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
–auth:需要密码才能访问容器服务。

注意要加上 --network lcgnet
在这里插入图片描述
然后执行

docker exec -it mongo mongo admin

db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

db.auth('admin', '123456')

在这里插入图片描述我们启动完成后,发现mongo已经连接至自定义网络
在这里插入图片描述
启动自定义镜像生成的容器

docker run -it --name py_11.1_bridge --network lcgnet -v /home/slifeai/project_object/test/workspace/:/workspace --runtime=nvidia py_11.1:latest /bin/bash

注意要加上 --network lcgnet

在这里插入图片描述在这里插入图片描述
再一次启动完成后,发现mongo和自定义容器都已经连接至自定义网络
在这里插入图片描述

3. 测试pymongo

import pymongo


# 连接mongo
client = pymongo.MongoClient('192.168.0.240', 27019)
print(client)
# 连接集合
base_name = client['admin']
# 认证
base_name.authenticate("admin", "123456", mechanism="SCRAM-SHA-1")
# 连接表
table_name_ = "trashBin_2022-04-24"
table_name = base_name[table_name_]
print(table_name.find_one())

在这里插入图片描述

在这里插入图片描述
连接成功,并且查询成功

注:mongo版本: 在3.9版本及以前是正常运行的,而在4.0版本会出错,使用的时候注意版本

pip install pymongo==3.11.4

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心惠天意

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值