对于 docker-machine 的理解以及在 docker-swarm 中使用 python 针对于 docker 的 SDK

环境搭建问题

https://blog.csdn.net/Enjolras_fuu/article/details/89244113 中我们搭建了一个单机的 docker swarm环境, 退出这个集群之后,执行docker servise ls

(base) furuiyangdeMacBook-Pro:SwarmSense-IoT-Platform furuiyang$ docker service ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

这是因为当前的主机并不在这个集群中,比较方便的一种做法是把当前的 Machine CLI指向manager主机:

eval "$(docker-machine env manager)"

这时候再在当前终端执行 docker service ls :

(base) furuiyangdeMacBook-Pro:SwarmSense-IoT-Platform furuiyang$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS

SDK 的使用

安装:
pip install docker 

相关的文档: https://docker-py.readthedocs.io/en/stable/client.html

用到哪里再来补充吧 … 先不按顺序写写最近用到的

创建客户端
# test docker SDK for python
import docker
# client = docker.from_env()
client = docker.DockerClient(base_url='unix://var/run/docker.sock')
print('client1---> ', client)
# client1--->  <docker.client.DockerClient object at 0x103d5c518>
查看镜像
import docker
# client = docker.DockerClient(base_url='unix://var/run/docker.sock')
client = docker.from_env()
# 查看当前的镜像
images = client.images.list()
print(images)  # 返回一个镜像列表对象 

运行结果:
在这里插入图片描述
终端查看镜像:
在这里插入图片描述

运行起一个镜像
import docker
client = docker.from_env()

# 运行起一个镜像 返回结果 感觉就像一个轻量级的进程 
res = client.containers.run("ubuntu:latest", "echo hello world")
print(res)
# b'hello world\n'

查看正在运行的容器对象

import docker
client = docker.from_env()

# 查看正在运行的容器
containers = client.containers.list()
print(containers)

# 停止正在运行的容器 
container = containers[0]
container.stop()

# 启动
container.start()

# 重启 
container.restart()

# 暂停 
container.pause()

# 暂停后继续 
container.unpause()

# 查看容器状态 
status = container.status

# 查看容器的 id  对应于 CONTAINER ID
id = container.id

# 容器名称
name = container.name

# 标签
lbs = container.labels

# 查看容器的镜像来源 
image = container.image  # image: <Image: 'ubuntu:18.04', 'ubuntu:latest'>

# 查看运行时产生的日志 
logs = container.logs()
print(logs)
for line in container.logs(stream=True):
    print(line.strip())

针对于服务的SDK

eval "$(docker-machine env manager)"  # 注意如果是 docker-machine 首先在终端执行这一句 
查看当前运行的服务
# 查看当前运行的服务
ss = client.services.list()
创建服务
# for example 
docker service create --name etcd \
  --network swarm_network \
  --publish 2380 --publish 2379:2379 \ 
  quay.io/coreos/etcd:latest etcd \
    -advertise-client-urls http://etcd:2379 \
    -listen-client-urls http://0.0.0.0:2379
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值