我正在尝试创建一个充当完整虚拟机的Docker容器.我知道我可以使用Dockerfile中的EXPOSE指令来公开一个端口,我可以使用-p
flag docker run
来分配端口,但是一旦容器实际运行,是否有命令打开/映射其他端口?
例如,假设我有一个运行sshd的Docker容器.其他人使用容器ssh并安装httpd.有没有办法在容器上公开端口80并将其映射到主机上的端口8080,以便人们可以访问容器中运行的Web服务器,而无需重新启动它?
我在为/var/lib/docker
Mac安装docker之后在Mac上寻找文件夹.
随着docker info
我得到
Containers: 5
...
Server Version: 1.12.0-rc4
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 339
Dirperm1 Supported: true
...
Name: moby
ID: LUOU:5UHI:JFNI:OQFT:BLKR:YJIC:HHE5:W4LP:YHVP:TT3V:4CB2:6TUS
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
....
Run Code Online (Sandbox Code Playgroud)
但/var/lib/docker
我的主机上没有目录.
我已经检查/Users/myuser/Library/Containers/com.docker.docker/
但在那里找不到任何东西.知道它在哪里吗?
注意:对于Windows和Docker来说都是新手
我一直在使用的教程说,/var/lib/docker/containers
如果我们使用的是Linux,它们就在使用,但我似乎无法在我的Windows机器上找到它.
谢谢!
其他信息:我已经检查了为 docker 桌面映射的磁盘映像位置。它是一个 vhdx 文件。我无法使用 Oracle virtual box 打开它 - 它说它不是受支持的版本文件。我尝试在 Hyper V 管理器中打开,VM 被列出:DockerDesktopVM。
假设我有一个MongoDb
或Sql Server
包含大量数据容器,突然间(这很有可能)我需要更改端口!可能是因为突然的安全问题!我需要停止容器并重新启动它在不同的端口上运行。为什么 docker 不允许我这样做,如果我再次运行图像,将创建一个新容器,里面没有数据,这会导致很多混乱。
是否有适当的内置解决方案?我所说的正确是指不需要我备份数据库、将它们移出容器卷并再次恢复它们的解决方案。一些合乎逻辑的东西,例如可以允许我更改转发端口的命令,例如-p 1433:1234 to 27017:1234
.
我已经在系统中安装了 Oracle 12c 客户端,并且可以在安装时访问链接https://localhost:5500/em。当我重新启动系统时,我无法访问该链接。但是我的 sqlplus 工作正常。我检查了此链接中的一些链接,他们要求使用emctl status dbconsole验证状态。当我键入命令时,它显示 emctl 无法识别。任何人都可以帮助我解决连接 localhost 和 emctl 的问题吗?提前致谢
我按照文章启动了一个 RabbitMQ 容器:https : //docs.docker.com/samples/library/rabbitmq使用包括管理工具的图像
docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management
Run Code Online (Sandbox Code Playgroud)
docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management
Run Code Online (Sandbox Code Playgroud)
我可以通过http://localhost:8080访问管理工具
然后,我按照那篇文章创建了最基本的 C# 项目,以与我的本地 RabbitMQ 实例进行通信:
docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
8a42bb749074 rabbitmq:3-management "docker-entrypoint.s…" 8 hours ago Up 8 hours 4369/tcp, 5671-5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:8080->15672/tcp some-rabbit
Run Code Online (Sandbox Code Playgroud)
但不幸的是出现了以下错误:
using System.Globalization;
using RabbitMQ.Client;
namespace RabbitCSharp
{
public static class Program
{
public …
Run Code Online (Sandbox Code Playgroud) 据我所知,docker 不支持在创建容器后更改端口映射的任何命令。
但是这个答案说通过更改 hostconfig.json 文件,我可以更改端口映射。
如何将端口映射分配给现有的 Docker 容器?
我在 windows + WSL2 中使用 docker 桌面。所以 hostconfig.json 的路径与其他答案不同。
hostconfig.json 在哪里?
就我而言, (\wsl$\docker-desktop-data\mnt\wsl\docker-desktop-data\data, /var/lib/docker(in wsl)) 目录不存在。
我想编辑docker图像元数据,原因如下:
我不喜欢图像父亲EXPOSE,VOLUME等声明(见#3465,Docker-Team不想提供解决方案),所以我想"取消音量"或"不曝光"图像.
我不喜欢图像ContainerConfig
(请参阅docker inspect [image]
)因为它是从正在运行的容器中生成的docker commit [container]
修复错误docker build
或docker run
类似错误:
cannot mount volume over existing file, file exists [path]
有什么方法可以做到吗?