如何使用 Docker.DotNet 启动容器 (NET CORE)
How to start container with Docker.DotNet (NET CORE)
我尝试使用 NET CORE 包 https://github.com/dotnet/Docker.DotNet 从 NET CORE 启动 docker 容器。
通常我的命令行看起来像
sudo docker run -it \
--name digiwage.$(date +%Y-%m-%d-%H.%M.%S) \
--expose='46003' \
-e RPC_PASSWORD=$(xxd -l 32 -c 32 -p /dev/urandom) \
-e EXTERNAL_IP='157.XX.XX.85' \
-e MASTERNODE_PRIV_KEY='51kWXqrknGeLLEqnUgRBPtrBxQ3o5VBp4bkRy4fHN3ZpzURHdkr' \
-e TX_INDEX='1' \
-e SEED_NODE='95.XX.XX.73' \
-e PORT='46003' \
-e RPC_ALLOW_IP='127.0.0.1' \
-e RPC_CONNECT_IP='127.0.0.1' \
-p '157.XX.XX.85:46003:46003' \
XXXXXX/daemon:latest
但是文档中没有要点。首先,docker 文档 https://docs.docker.com/engine/reference/run/#expose-incoming-ports docker 有两个与端口相关的参数
--expose=[] Expose a port or a range of ports inside the container
-p=[] Publish a container's port or a range of ports to the host
不幸的是,我在 Docker.DotNet 中没有看到两个与端口相关的不同参数。
第二期,我的代码只生成容器模板而不是工作容器。
Dim Env = New List(Of String)({"RPC_PASSWORD=$(xxd -l 32 -c 32 -p /dev/urandom)",
"EXTERNAL_IP='157.XX.XX.85'",
"MASTERNODE_PRIV_KEY='51kWXqrknGeLLEqnUgRBPtrBxQ3o5VBp4bkRy4fHN3ZpzURHdkr'",
"TX_INDEX='1'",
"SEED_NODE='95.XX.XX.73'",
"PORT='46004'",
"RPC_ALLOW_IP='127.0.0.1'",
"RPC_CONNECT_IP='127.0.0.1'"})
Dim ExposedPorts = New Dictionary(Of String, EmptyStruct)
ExposedPorts.Add("'157.XX.XX.85:46004:46004'", New EmptyStruct)
Dim Prm = New CreateContainerParameters With {
.Image = "alexev275/digiwage:latest",
.Name = $"digiwage.{Guid.NewGuid}",
.Env = Env,
.ExposedPorts = ExposedPorts,
.Tty = True
}
Dim CreateContainer As CreateContainerResponse = DockerHub.Containers.CreateContainerAsync(Prm).Result
Dim StartResTask As Task(Of Boolean) = DockerHub.Containers.StartContainerAsync(CreateContainer.ID, New ContainerStartParameters())
StartResTask.Wait()
我没有收到错误或警告,只有 Status=RunToCompletion 和没有启动的容器模板。
如何通过https://github.com/dotnet/Docker.DotNet真正启动容器?
以及如何设置正确的参数 --expose=[] 和 -p=[] ?
这里有两个问题:
您的容器在您启动后立即退出
你不知道如何暴露端口
那应该是两个不同的问题。
无论如何,您需要找到容器日志并阅读任何 errors/messages 记录以找出如何解决问题 1。它可能与 RPC_PASSWORD=$(xxd -l 32 -c 32 -p /dev/urandom)
有关,它由 [= 评估28=] 生成随机密码,但它是 .NET 中的文字字符串。
我尝试使用 NET CORE 包 https://github.com/dotnet/Docker.DotNet 从 NET CORE 启动 docker 容器。
通常我的命令行看起来像
sudo docker run -it \
--name digiwage.$(date +%Y-%m-%d-%H.%M.%S) \
--expose='46003' \
-e RPC_PASSWORD=$(xxd -l 32 -c 32 -p /dev/urandom) \
-e EXTERNAL_IP='157.XX.XX.85' \
-e MASTERNODE_PRIV_KEY='51kWXqrknGeLLEqnUgRBPtrBxQ3o5VBp4bkRy4fHN3ZpzURHdkr' \
-e TX_INDEX='1' \
-e SEED_NODE='95.XX.XX.73' \
-e PORT='46003' \
-e RPC_ALLOW_IP='127.0.0.1' \
-e RPC_CONNECT_IP='127.0.0.1' \
-p '157.XX.XX.85:46003:46003' \
XXXXXX/daemon:latest
但是文档中没有要点。首先,docker 文档 https://docs.docker.com/engine/reference/run/#expose-incoming-ports docker 有两个与端口相关的参数
--expose=[] Expose a port or a range of ports inside the container
-p=[] Publish a container's port or a range of ports to the host
不幸的是,我在 Docker.DotNet 中没有看到两个与端口相关的不同参数。
第二期,我的代码只生成容器模板而不是工作容器。
Dim Env = New List(Of String)({"RPC_PASSWORD=$(xxd -l 32 -c 32 -p /dev/urandom)",
"EXTERNAL_IP='157.XX.XX.85'",
"MASTERNODE_PRIV_KEY='51kWXqrknGeLLEqnUgRBPtrBxQ3o5VBp4bkRy4fHN3ZpzURHdkr'",
"TX_INDEX='1'",
"SEED_NODE='95.XX.XX.73'",
"PORT='46004'",
"RPC_ALLOW_IP='127.0.0.1'",
"RPC_CONNECT_IP='127.0.0.1'"})
Dim ExposedPorts = New Dictionary(Of String, EmptyStruct)
ExposedPorts.Add("'157.XX.XX.85:46004:46004'", New EmptyStruct)
Dim Prm = New CreateContainerParameters With {
.Image = "alexev275/digiwage:latest",
.Name = $"digiwage.{Guid.NewGuid}",
.Env = Env,
.ExposedPorts = ExposedPorts,
.Tty = True
}
Dim CreateContainer As CreateContainerResponse = DockerHub.Containers.CreateContainerAsync(Prm).Result
Dim StartResTask As Task(Of Boolean) = DockerHub.Containers.StartContainerAsync(CreateContainer.ID, New ContainerStartParameters())
StartResTask.Wait()
我没有收到错误或警告,只有 Status=RunToCompletion 和没有启动的容器模板。
如何通过https://github.com/dotnet/Docker.DotNet真正启动容器?
以及如何设置正确的参数 --expose=[] 和 -p=[] ?
这里有两个问题:
您的容器在您启动后立即退出
你不知道如何暴露端口
那应该是两个不同的问题。
无论如何,您需要找到容器日志并阅读任何 errors/messages 记录以找出如何解决问题 1。它可能与 RPC_PASSWORD=$(xxd -l 32 -c 32 -p /dev/urandom)
有关,它由 [= 评估28=] 生成随机密码,但它是 .NET 中的文字字符串。