Kun*_*gal 53 docker dockerfile docker-compose
我们什么时候使用docker service create命令,什么时候使用docker run命令?
Vis*_*esn 29
简而言之: Docker服务主要用于使用Docker swarm配置主节点时,因此docker容器将在分布式环境中运行,并且可以轻松管理.
Docker run: docker run命令首先在指定的图像上创建一个可写容器层,然后使用指定的命令启动它.
也就是说,docker run相当于API/containers/create then/containers /(id)/ start
来源:https://docs.docker.com/engine/reference/commandline/run/#parent-command
Docker服务: Docker服务将是一些较大应用程序环境中微服务的映像.服务示例可能包括HTTP服务器,数据库或您希望在分布式环境中运行的任何其他类型的可执行程序.
创建服务时,您可以指定要使用的容器映像以及在运行容器中执行的命令.您还可以定义服务的选项,包括:
来源:https://docs.docker.com/engine/swarm/how-swarm-mode-works/services/#services-tasks-and-containers
muh*_*mad 17
您可以通过两种方式使用 docker。
当您使用独立模式时,您仅在一台机器上安装了 docker 守护进程。在这里,您可以在该机器上创建/销毁/运行单个容器或多个容器。
所以当你跑步时docker run;创建docker-cli对守护进程的 API 查询dockerd以运行指定的容器。
因此,您对该命令所做的操作docker run只会影响您运行该命令的单个节点/计算机/主机。如果您使用容器添加卷或网络,那么这些资源将仅在您运行命令的单个节点中可用docker run。
当您想要或需要利用集群计算的优势(例如高可用性、容错性、水平可扩展性)时,您可以使用集群模式。使用 Swarm 模式,您的集群中可以有多个节点/机器/主机,并且可以在整个集群中分配工作负载。您甚至可以在单节点集群中启动集群模式,并且稍后可以添加更多节点。
您可以在此处免费重新创建该场景。假设此时我们只有一个名为 的节点node-01.dc.local,我们已在其中启动了以下命令,
####### Initiating swarm mode ########
$ docker swarm init --advertise-addr eth0
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-21mxdqipe5lvzyiunpbrjk1mnzaxrlksnu0scw7l5xvri4rtjn-590dyij6z342uyxthletg7fu6 192.168.0.8:2377
####### create a standalone container #######
[node1] (local) root@192.168.0.8 ~
$ docker run -d --name app1 nginx
####### creating a service #######
[node1] (local) root@192.168.0.8 ~
$ docker service create --name app2 nginx
Run Code Online (Sandbox Code Playgroud)
一段时间后,当您觉得需要扩展工作负载时,您添加了另一台名为 的计算机node-02.dc.local。您希望扩展服务并将其分发到新创建的节点。所以我们在节点上运行以下命令node-02.dc.local,
####### Join the second machine/node/host in the cluster #######
[node2] (local) root@192.168.0.7 ~
$ docker swarm join --token SWMTKN-1-21mxdqipe5lvzyiunpbrjk1mnzaxrlksnu0scw7l5xvri4rtjn-590dyij6z342uyxthletg7fu6 192.168.0.8:2377
This node joined a swarm as a worker.
Run Code Online (Sandbox Code Playgroud)
现在,从第一个节点开始,我运行了以下命令来扩展服务。
####### Listing services #######
[node1] (local) root@192.168.0.8 ~
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
syn9jo2t4jcn app2 replicated 1/1 nginx:latest
####### Scalling app2 from single container to 10 more container #######
[node1] (local) root@192.168.0.8 ~
$ docker service update --replicas 10 app2
app2
overall progress: 10 out of 10 tasks
1/10: running [==================================================>]
2/10: running [==================================================>]
3/10: running [==================================================>]
4/10: running [==================================================>]
5/10: running [==================================================>]
6/10: running [==================================================>]
7/10: running [==================================================>]
8/10: running [==================================================>]
9/10: running [==================================================>]
10/10: running [==================================================>]
verify: Service converged
[node1] (local) root@192.168.0.8 ~
####### Verifying that app2's workload is distributed to both of the ndoes #######
$ docker service ps app2
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
z12bzz5sop6i app2.1 nginx:latest node1 Running Running 15 minutes ago
8a78pqxg38cb app2.2 nginx:latest node2 Running Running 15 seconds ago
rcc0l0x09li0 app2.3 nginx:latest node2 Running Running 15 seconds ago
os19nddrn05m app2.4 nginx:latest node1 Running Running 22 seconds ago
d30cyg5vznhz app2.5 nginx:latest node1 Running Running 22 seconds ago
o7sb1v63pny6 app2.6 nginx:latest node2 Running Running 15 seconds ago
iblxdrleaxry app2.7 nginx:latest node1 Running Running 22 seconds ago
7kg6esguyt4h app2.8 nginx:latest node2 Running Running 15 seconds ago
k2fbxhh4wwym app2.9 nginx:latest node1 Running Running 22 seconds ago
2dncdz2fypgz app2.10 nginx:latest node2 Running Running 15 seconds ago
Run Code Online (Sandbox Code Playgroud)
但是,如果您需要扩展您的 app1,则不能,因为您已经使用独立模式创建了容器。
Tri*_*tan 15
您可能希望阅读" docker service is the new docker run "
根据这些幻灯片,"docker service create"就像一个"进化的"docker run.如果要将容器部署到Docker Swarm,则需要创建"服务"
Wil*_*rin 11
Docker服务就像容器的"蓝图".您可以将一个简单的工作服务器定义为服务,然后将该服务扩展到20个容器,以便快速通过队列.然后再次将该服务缩减到3个容器.此外,通过Swarm,这些容器可以部署到您的swarm的不同节点.
但是,是的,我也建议阅读文档,就像@Tristan建议的那样.
例如
docker service create --name MY_SERVICE_NAME --replicas 3 IMAGE:TAG
Run Code Online (Sandbox Code Playgroud)
创建基于IMAGE:TAG图像的MY_SERVICE_NAME服务的3个任务。
更多信息可以在这里找到
| 归档时间: |
|
| 查看次数: |
28181 次 |
| 最近记录: |