环境搭建问题
在 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