docker commit <containerid>
docker run -p containerid
通过以上命令创建新的镜像文件,run -p参数开放新端口出来;实际使用上不方便。
宿主机(host)上修改iptables 规则,开放容器的响应端口;参考网上的命令
iptables -t nat -A DOCKER -p tcp -dport 8080 -j DNAT --to-destination 172.17.0.2:8080
当我们创建nginx镜像时,并且启动nginx时,我们只能在容器内部区访问nginx的网址。所以为了容器之外能访问,需要暴露端口,也就需要了将容器内部的端口映射出去。
docker容器暴露端口的形式有四种:
将指定的容器端口映射到宿主机所有地址的一个随机端口
2、-p :
将容器端口映射到指定的主机端口
3、-p ::
将容器端口映射到主机指定ip的随机端口
4、-p ::
将容器端口映射到指定主机ip的指定端口
方法一docker commit <containerid>docker run -p containerid通过以上命令创建新的镜像文件,run -p参数开放新端口出来;实际使用上不方便。方法二宿主机(host)上修改iptables 规则,开放容器的响应端口;参考网上的命令iptables -t nat -A DOCKER -p tcp -dport 8080 -j DNAT --...
Docker
允许通过外部访问
容器
或者
容器
之间互联的方式来提供网络服务。
以下操作通过myfirstapp镜像模拟,如何制作myfirstapp镜像请点击此处。
1、外部访问
容器
容器
启动之后,
容器
中可以运行一些网络应用,通过-p或-P参数来指定
端口
映射。
a、用-P(大写)标记时,
docker
会随机选择一个
端口
映射到
容器
内部
开放
的网络
端口
上。
$
docker
run -d -P myfirstapp python app.py
$
docker
ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
在linux服务器上装好
docker
,我的linux版本为centos7,这里不建议使用#yum install
docker
方式安装,因为这种方式安装的版本比较旧,而且在配置远程api时要好多错误,建议使用方式
#curl -fsSL https://get.
docker
.com/ | sh或#yum install
docker
-engine,这里以17.0.3-ce版本为例,使用
#do...
在Linux中有两种安装
docker
的方法,一种是使用官方安装脚本自动安装
docker
,另一种是手动安装
docker
。
容器
中可以运行一些应用,要让外部也可以访问这些应用,可以通过“-P或-p”参数来指定
端口
映射。
当使用“-P”标记时,
容器
内部
端口
随机映射到主机的网络
端口
(
端口
号:49000~49900),作为
容器
内部
开放
的网络
端口
。
当使用“-p”标记时,
容器
内部
端口
绑定到指定主机的网络
端口
,作为
容器
内部
开放
的网络
端口
,在一个指定
端口
只可以绑定一个
容器
。
通过以上命令创建新的镜像文件,run -p参数
开放
新
端口
出来;实际使用上不方便。
宿主机(host)上修改iptables 规则,
开放
容器
的响应
端口
;参考网上的命令
iptables -t nat -A
DOCKER
-p tcp -dport 8080 -j DNAT --to-destination 172.17.0.2:8080
当我们创建nginx镜像时,并且启动nginx时,我们只能在
容器
内部区访问n
#
开放
一个
端口
9080
$ iptables -A OUTPUT -p tcp --sport 9080 -j ACCEPT
$ iptables -A INPUT -p tcp --dport 9080 -j ACCEPT
# 保存并重启
$ service iptables save && service iptables restart
# 查看是否添加
$ iptab
补充:我的Linux环境是运行本机的虚拟机上。
因为IDEA集成
docker
环境,实质上是通过远程访问的形式,进行连接,因此需要
开
启
Docker
的2375
端口
的远程访问权限。
开
启2375
端口
网上很多资料,直接就指定了
docker
service文件的位置。
但是因为Linux环境的不同,
docker
service文件的目录是不一样的,直接贴个图。
我就在这个地方被坑了半天,因为我的linux环境根本就没有这个文件。
换言之,我的
docker
s
1.问题描述
docker
下的oracle数据库服务存在漏洞,解决难度较高,于是通过firewalld限制高危
端口
开放
,只允许本机访问。发现即使firewalld把oracle 1521漏洞不
开放
出去,但其他服务器依然能访问这给服务器的1521
端口
,也就是说firewalld配置的规则失效。
2.解决办法
docker
配置文件中添加 “iptables”: false
[root@localhost ~]# vi /etc/
docker
/daemon.json
"data-root": "/op
要使用 `
docker
_sd_config` 监控
Docker
集群,需要在 Prometheus 的配置文件中设置相应的服务发现规则。以下是一个示例配置文件,用于监控运行在
Docker
集群中的 Node.js 应用程序:
```yaml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'nodejs-app'
metrics_path: '/metrics'
file_sd_configs:
- files:
- /etc/prometheus/targets.json
refresh_interval: 5m
relabel_configs:
- source_labels: [__meta
_docker
_container_label_com
_docker
_swarm_service_name]
regex: '(.+)'
target_label: job
replacement: '$1'
- source_labels: [__meta
_docker
_container_label_com
_docker
_swarm_task_id]
regex: '(.+)'
target_label: instance
replacement: '$1'
- source_labels: [__address__, __meta
_docker
_container_label_com
_docker
_swarm_task_id]
regex: '([^:]+)(?::\d+)?'
target_label: __address__
replacement: '$1:3000'
- source_labels: [__meta
_docker
_container_label_com
_docker
_swarm_service_name]
regex: '(.+)'
target_label: service
replacement: '$1'
在上面的配置文件中,`job_name` 是 Prometheus 的作业名称,`metrics_path` 是应用程序的指标路径。`file_sd_configs` 是文件服务发现配置,指定了用于存储应用程序地址信息的 JSON 文件路径。`relabel_configs` 是标签重写配置,用于将
Docker
元数据转换为 Prometheus 标签。
注意,上面的示例配置文件假设 Node.js 应用程序运行在
容器
的 3000
端口
上。如果你的应用程序运行在不同的
端口
上,请相应地更改标签重写配置。