我正在阅读docker API并尝试创建一个简单的容器并公开1个端口.
在我的示例中,我有一个应用程序,它侦听容器内的TCP端口9595
,我想从外部世界(即容器的主机)端口访问它9090
.
在创建容器我有"ExposedPorts": { "9595/tcp: {}" }
和"PortBindings": { "9595/tcp": [{ "HostPort": "9090" }] }
.
所以,如果我从主机上访问http://container_internal_ip:9595
它的工作原理!但是,当我访问时http://localhost:9090
,这是我期望使用此端口映射功能,它不起作用...
在跑步的时候,docker port containerID
我9595/tcp -> 0.0.0.0:9090
应该这意味着,when connecting to any IP on the host, at port 9090, forward to the container in port 9595
.
那么,这里有什么问题?为什么我不能连接到9090?
我感谢任何澄清.
我已经使用 asp dotnet 开发了一个 Web 应用程序,目前我在 IIS 上运行它,无论如何我可以在 docker 容器中运行相同的应用程序,
我对 Docker 比较陌生,我玩过一点,我熟悉 docker compose ,所以我想知道我是否可以(dockerize)我开发的应用程序。
我的 Dockerfile 现在看起来像:
#Making a dotnet container
FROM microsoft/dotnet:latest
#Make a directory
WORKDIR /app
#copy dll files and other dependencies
COPY . /app
#dotnet run should run the app
ENTRYPOINT ["DOTNET","RUN"]
Run Code Online (Sandbox Code Playgroud)
据我了解,这会在我的 dotnet 容器中创建一个目录并复制当前文件夹中的文件,应用程序将在 dotnet run 上运行
在我的应用程序套件中,我从源代码构建 Libtiff,然后将其链接到我自己编写的应用程序。Libtiff 的 CMakeLists.txt 文件指定静态库进入库位置 CMAKE_INSTALL_FULL_LIBDIR,由 CMake 的 GNUInstallDirs 选项确定。
当我第一次构建和测试我的应用程序时,我在 Debian 中这样做,并且在此平台上 CMAKE_INSTALL_FULL_LIBDIR 设置为 ${CMAKE_INSTALL_PREFIX}/lib。很好,所以在我自己的应用程序的 CMakeLists.txt 文件中,我告诉它在那里搜索静态 tiff 库。没问题...
现在,我已将相同的构建套件应用于 Red Hat Linux 平台(Pengwin Enterprise for WSL),结果发现此处 CMAKE_INSTALL_FULL_LIBDIR 设置为 ${CMAKE_INSTALL_PREFIX}/lib 64。我检查了CMake 文档,似乎说实际上“lib”或“lib64”的选择是自动确定的并且与平台相关。
那么,在我自己的应用程序的 CMakeLists.txt 文件中,有没有办法找出它在我当前平台上的位置?否则我该如何猜测去哪里寻找图书馆呢?我环顾四周,但找不到保存平台相关字符串的 CMAKE 标准变量,所以我唯一能想到的是:
...但这两种方法看起来都笨拙不雅,肯定有更好的方法。
我是码头工人的新手.我正在使用docker compose来管理容器.
我的目标是让数据库容器持久化或不持久化数据,这可以由其他开发人员在没有很多手动步骤(pg_dump和pg_store等)的情况下提取,以在本地运行他们的开发环境.
我想知道我是否可以构建数据库快照的docker镜像(postgres).这可能吗?如果没有,推荐使用docker的方法是什么?
谢谢.