当前位置:首页 » 密码管理 » docker外网访问

docker外网访问

发布时间: 2023-02-14 03:24:31

linuxdocker设置禁止外部访问

1、登录数据库
2、禁用远程访问。
3、切换到mysql数据库。
4、更改用户host权限。
5、执行命令(FLUSHPRIVILEGES。)刷新权限。
6、再次查看所有用户及host配置。

Ⅱ 基于 Docker 安装 Nginx,启动运行,外网访问,映射配置文件

基于 Docker 安装 Nginx
查找Nginx镜像
语法:docker search nginx
示例:

获取Nginx镜像

示例:

启动nginx容器实例

说明:--name nginx nginx 第一个nginx是通过--name指定的nginx容器实例的名称,另一个nginx表示nginx仓库的名称。

查看nginx容器实例的进程信息

通过ps -ef | grep nginx查看

进入nginx容器内

杀死nginx容器实例

停止nginx实例

启动nginx容器实例

重启nginx容器实例

移除nginx容器实例

案例
暴露外部端口
基于docker run -d --name nginx nginx方法启动nginx后,Docker 容器并没有对外暴露访问的端口,即无法通过当前主机外部浏览器器访问nginx。那么该怎么样呢?

语法:

-p 80:80:通过-p来指定Docker容器中nginx实例对外开放的端口。本例中,第一个80端口是对外开放的端口,第二个80端口指对外开放的端口映射到容器里的端口号。

示例:

通过当前主机外的浏览器访问nginx,如下图:

指定外部的配置文件
语法:

说明:
-v: 表示挂载一个本机目录或文件到容器里。
-v /develop/nginx/nginx.conf:/etc/nginx/nginx.conf:将/develop/nginx/nginx.conf配置文件挂载到容器中/etc/nginx/nginx.conf这个配置文件中。
-v /develop:/develop:将/develop这个目录挂载到容器里的/develop这个目录里。

示例:

注意事项:指定外部配置文件,同时需要指定nginx的首页面,否则会抛出404错误,原因就是因为nginx找不到配置文件中默认的index页面。
本例中,使用/develop/apps/static/index.html替代了容器里的nginx默认的index页面,同时,-v /develop:/develop挂载根目录即可访问子目录。

指定网络模式:--net=bridge 默认模式

其中8080是指主机的端口,而80是指容器的端口
我们先看一下端口的状态

docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker。也就是说,服务中使用的localhost指的是这个Linux环境的地址,而不是我们的宿主环境Windows。我们可以通过命令:

找到这个Linux的ip地址,一般情况下这个地址是192.168.99.100,然后在Windows的浏览器中,输入这个地址,加上服务的端口即可启用了。

Ⅲ 四、Docker网络揭秘

Docker 之所以功能这么强大,其实就是充分利用了Linux Kernel的特性:NameSpace、CGroups、UnionFileSystem。通过这些特性实现了资源隔离、限制与分层等。本文这次就来揭晓Docker中的容器是如何做到网络互通的。

两台机器如果要实现通信,其实就是通过底层的网卡进行数据传输,每个网卡都有一个唯一的MAC地址,网卡又会绑定一个ip地址,只要两台机器的网络可以互通,那么这两台机器就可以进行通信。

想要实现通信,就得有两个同一网段的网卡,两个网卡必须是可以 ping 通的。

Docker在安装成功后,会在宿主机创建一个docker0网卡,这个网卡就是负责容器与宿主机之间通信的桥梁。

通过Docker创建一个容器之后,会在宿主机再创建一个网卡,也就是上面的 veth3543ea3@if7 ,容器内也会创建一个网卡。

一般成对的网卡,网卡组件名称后面的数字是连续的,比如宿主机的 @if7 和容器内的 @if8 ,正是这成对的网卡,才实现了容器与宿主机之间的通信。这其实是利用 Linux Kernel 的特性 NameSpace 实现的网卡隔离,不同NameSpace下的网卡是独立的,就像Java程序中的 package 一样。

从上面的例子中看到容器与宿主机之间的通信好像并不是通过docker0网卡实现的?

其实这只是单容器的状态,可能看不出docker0的作用。用图来表示一下单容器的网卡通信情况。

通过docker生成的 eth0 和 veth 两个网卡实现同一网段内的通信,而这个网卡又是桥接在docker0网卡上的。

再看下有多个容器的情况。

两个容器之间可以互相通信的原因就是因为docker0的存在,因为它们的网卡都是桥接在docker0上,所以也就有了和另一个容器通信的桥。

我们来验证一下是不是这样!

这种网络连接方法我们称为Bridge,这也是docker中默认的网络模式。可以通过命令查看docker中的网络模式:

通过 docker network ls 命令查看到,docker提供了3种网络模式,brige模式我们已经知道了,那 host 和 none 又是什么意思呢?不妨来验证一下:

这种模式只会创建一个本地的环路网卡,无法与其他容器或宿主机进行通信。

在创建自己的network之前先来解释一下为什么要创建新的network。

我们用一个例子来演示一下不同容器之间的通信。

容器之间通过 ip 是可以正常访问的,但是有没有这种情况:如果一个容器出问题了,我们重启之后它的ip变了,那是不是其他用到这个容器的项目配置是不是都得改。

有没有可能直接通过容器名称来访问呢?来验证一下:

发现并不能 ping 通,但是可以使用别的手段来达到这个目的。

通过上面这种方式就可以做到以容器名来 ping 通其他容器,其实它就跟windows系统中在 hosts 文件里加了个映射是一样的。

可以看到创建自定义的 network 自动帮我们实现了这个功能,而且使用自定义的 network 也方便管理,不同业务类型的容器可以指定不同的 network。

不同的 network ip网段也不一样,这样也可以增加单机中可以创建的容器的数量。

在创建一个容器的时候,一般都需要讲容器需要暴露的端口映射到物理主机的相同端口或其他端口,因为在外网环境下是不方便直接连接到容器的,所以需要通过映射端口的方式,让外网访问宿主机的映射端口来访问容器。

如果想建立多个容器,势必需要端口映射,以满足不同容器使用相同端口的情况。

以上这些内容都是在单容器进行操作,容器之间通信也只是通过 docker0 实现的桥接模式。

如果要实现多机之间的docker通信,其实还是通过网卡,只不过需要其他的技术来实现了。

本章节就不在演示,到后面的章节再来分析!

Ⅳ docker 外网访问不了docker容器

出现问题的原因有3种,
1:你安装docker的服务器没有关闭防火墙,也就是说你访问你安装docker的物理机都访问不了,物理机里的docker就更访问不了了。

2:docker在创建镜像的时候没有做端口映射,这是就出现能访问物理机,但访问不了docker,你可以使用docker ps 查看镜像的端口映射情况。

3:端口映射不正确,如你docker中某一容器的8080端口映射到安装docker物理机的80端口,加入你在镜像里面安装了tomcat,但是你tomcat使用的是8080以外的任意端口,这是你访问物理机ip+80端口也无法访问。

Ⅳ Docker安装ES7.6.1并从外网访问

docker pull elasticsearch:7.6.1

docker run --name myElasticSearch -p 9200:9200 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -d elasticsearch:7.6.1
这里需要注意的是,给es限制内存的大小 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" ,否则内存不足启动不了。参数 -e "discovery.type=single-node" 意为设置为单节点。

curl localhost:9200

[root@VM-8-11-centos elaticsearch]# docker container update --restart=always myElasticSearch

Ⅵ Docker安装教程

1.在线安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

在线安装方式二

curl -sSL https://get.cloud.io/docker | sh

3.查看Docker

yum list docker-ce --showplicates | sort -r

4.查看Docker版本

docker version

5.启动Docker

systemctl start docker

6.测试Docker是否启动成功

(1).拉取HelloWorld的镜像

docker pull hello-world

(2).运行hello-world镜像

docker run hello-world

看到下面的图就证明安装成功了

docker search redis

2.取最新版的 Redis 镜像

docker pull redis:latest

3.查看本地镜像

docker images

4.运行容器(这是只能本地访问,但是我们需要进行外网访问)

docker run -itd --name redis-test -p 6379:6379 redis

-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。

5.通过 redis-cli 连接测试使用 redis 服务。

docker exec -it redis-test /bin/bash

6.查看 Redis是否启动成功

ps aux | grep redis-server

出现如下,则为成功

上面的方法只能本地访问,我们需要的是外网访问redis

4.创建conf 和 data 文件夹

mkdir /usr/local/docker/conf

/usr/local/docker/data

然后再conf下创建redis.conf 的配置文件

放入如下内容,密码可不用配置

6.查看Redis是否启动

docker ps

就可以看到redis了,如果状态是UP,那么就可以确定是安装成功了,启动完成之后,把云服务器的6379端口出入打开,就可以看到了。

这时候我们就可以去使用外部工具进行连接了。

1.拉取镜像

docker pull mysql

2.在opt下创建文件夹

cd /opt/

mkdir mysql_docker

cd mysql_docker/

echo $PWD

3.启动mysql容器,在var/lib/docker/containers/下查看容器

cd /var/lib/docker/containers/

4.查看mysql进程

docker ps -a

5.进入mysql容器,并登陆mysql

docker exec -it mysqlserver bash

mysql -uroot -p

123456

6.开启远程访问权限

use mysql;

select host,user from user;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

flush privileges;

然后去连接一下数据库测试就可以了

7.关闭docker中mysql容器

docker stop mysqlserver

8.关闭docker

systemctl stop docker

Ⅶ docker 容器无法访问外网 宿主机是 centos7.2系统 里面所有容器都无法访问外网

在CentOS7中运行NodeJs的容器,发现挂载的本地目录在容器中没有执行权限,经过各种验证和Google搜索,找到了问题的原因,这里做一下记录。原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:
1,在运行容器的时候,给容器加特权:
示例:docker run -i -t --privileged=true -v /home/docs:/src waterchestnut/nodejs:0.12.0
2,临时关闭selinux:
示例:su -c "setenforce 0"
之后执行:docker run -i -t -v /home/docs:/src waterchestnut/nodejs:0.12.0
注意:之后要记得重新开启selinux,命令:su -c "setenforce 1"
3,添加selinux规则,将要挂载的目录添加到白名单:
示例:chcon -Rt svirt_sandbox_file_t /home/docs
之后执行:docker run -i -t -v /home/docs:/src waterchestnut/nodejs:0.12.0

Ⅷ docker镜像能上网吗

docker 镜像是无法连接外网,只有通过部署这个镜像的容器才能实现访问外网。查看此链接,详细介绍如何使用docker镜像,docker容器等功能,网页链接

Ⅸ dockertoolbox在没网情况下打开

问题出现原因:之前客户操作系统用的是winserver2016,用docker for windows,外网能直接访问服务;但另外一个客户用的是winserver2012R2,docker for windows是不支持的,只能用docker toolbox。而docker toolbox是在virtual box里面运行的,默认IP是192.168.99.100.这个IP是不能被外部访问到的!

解决方法:很简单,配置vm网络端口转发即可。

文章知识点与官方知识档案匹配
云原生入门技能树首页概览
9073 人正在系统学习中
打开CSDN APP,看更多技术内容

外网不能访问docker容器解决方案
首先外网能够ping通容器的宿主机例如我的容器宿主机是192.168.40.131 C:\Users\jiang>ping 192.168.40.131 正在 Ping 192.168.40.131 具有 32 字节的数据: 来自 192.168.40.131 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.40.131 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.40.131 的回复: 字节=32 时间<1ms TTL=64 来
继续访问
Docker内部部署的Java程序获取不到外部客户端访问IP解决方
Docker内部部署的Java程序获取不到外部客户端访问IP解决方法 转:原地址 /** * 获取访问客户端ip * @param request * @return * @throws IOException */ public static String getOriginIp(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"
继续访问
最新发布 Docker Toolbox下载安装运行镜像
打开之后找到 config.json,然后打开找到RegistryMirror,在[]里添加你要修改的镜像源,如果你没有可以搜索阿里云的docker镜像源,登录自己的控制台找到自己的,然后加进去,然后关闭虚拟机,再重新打开docker就行了。安装之后,点击的时候如果显示快捷方式不对显示查找git.bash文件的话,就要找到你git安装目录的bin目录里的bash.exe文件,点击选中就行了,使用命令docker start 运行一个停止的容器,这个命令中的容器ID不需要写完整,只需要能够与其他容器区分。
继续访问

内网环境下修改Docker Toolbox的访问地址并暴露端口
说明 前久遇到一个比较奇葩的问题,我们都知道在Windows环境下配置Docker Toolbox,启动后docker访问地址是192.168.99.100,但如果此时我们内网配置的ip网段也在192.168这个网段上,会导致我们启动docker后ping别人的机器比如192.168.1.163不通,因为别人的机器也被当成是docker的适配器管理下的了,当然会找不到,在此记录一下解决方法 快...
继续访问

【重磅推荐】docker toolbox无法被外网访问解决方法【基于bridge桥接模式必须实现端口转发】
解决方案:https://blog.csdn.net/a462464126/article/details/83061848?utm_source=blogxgwz7 docker toolbox是在virtual box里面运行的,默认IP是192.168.99.100.这个IP是不能被外部访问到的,如果本机要访问,则本机地址转发端口127.0.0.1来转发,如果是云服务器,外部访问,则需配置云服务器的外网ip来转发端口,否则无法访问,我的配置如下 ...
继续访问

docker toolbox无法被外网访问
docker toolbox无法被外网访问 解决方法: 完成
继续访问

Docker:Windows10 Home 上使用Docker遇到的一些问题
Windows10 Home 上使用Docker遇到的一些问题
继续访问
Docker Toolbox 地址映射无法访问localhost的问题
以下两种解决方法都可以: 方法一 https://blog.csdn.net/qq_36760953/article/details/83303322 方法二 https://blog.csdn.net/qq_40808344/article/details/88601085
继续访问
docker容器配置网络流量测试
第一步 运行一个镜像: docker run -itd [REPOSITORY]:[TAG] /bin/bash 第二步 进入此镜像的容器 docker exec -ti [NAMES] /bin/bash 第三步 设置docker容器的防火墙,参考 网络经验 http://jingyan..com/article/fcb5aff7b00826edaa4a7
继续访问
Docker学习笔记 — 开启Docker远程访问
开启Docker远程访问
继续访问
热门推荐 Docker运维笔记-Docker端口映射
为什么要端口映射? 端口映射的指令是什么? 如何查看端口映射是否成功?
继续访问
docker不能访问外网
如果docker不能访问外网了,先看一下/etc/resolv.conf文件是否配置了nameserver,如果还不可以访问外网,就重启docker服务。
继续访问
(一)docker Toolbox使用——1虚拟机和镜像地址配置
目录 1.基本使用 1.1 安装遇到问题 1.1.1 Docker Quickstart Terminal运行报错 1.1.2 创建虚拟机后卡在waiting for an IP 1.2 安装过程 1.2.1命令创建一个Docker虚拟机 1.2.2 确认我们的Docker虚拟机在运行中 1.2.3 获得虚拟机的环境变量 1.2.4 PowerShell和虚拟机里面的Docker Linux建立的连接 1.2.5 其他命令 1.3 Docker虚拟机文件地址修改 1.3.1 停...
继续访问
docker 容器无法连接外网
2019独角兽企业重金招聘Python工程师标准>>> ...
继续访问
docker toolbox无法被外网访问,解决方法为修改端口转发
问题描述:最近学习Docker,试着用wordpress和mysql安装个博客,但发现我的容器不能被外部访问到! 解决方法:因我用的操作系统是win10 家庭版,只能用安装docker toolbox。而docker toolbox是在virtualbox里面运行的,默认IP是192.168.99.100.这个IP是不能被外部访问到的!需要配置virtualbox网络端口转发。 ...
继续访问
docker toolbox 主机无法用localhost访问 只能通过默认的宿主ip
主机想要通过localhost访问需要在 oracle vm 中配置一下端口转发即可 第一个为主机端口 第二个为docker端口 docker 启动可以 用 --net=host 网络便无需指定主机端口号 ...
继续访问
docker
写评论

Ⅹ docker配置web服务后,要怎么让外网访问

直接在路由器你们做个端口映射 把你的192.168.0.254的80端口发布到Internet 就可以使用的你联通的外网IP访问你的网站了 记得采纳啊

热点内容
数控车床电脑编程 发布:2025-08-23 00:40:32 浏览:243
安卓手机如何一键修改序列号 发布:2025-08-23 00:31:33 浏览:428
vsqt编译通过 发布:2025-08-23 00:29:58 浏览:460
android设置sd卡 发布:2025-08-23 00:18:47 浏览:863
混合存储提供商 发布:2025-08-23 00:06:08 浏览:436
行锁算法 发布:2025-08-23 00:05:05 浏览:903
手机编程苹果 发布:2025-08-23 00:02:41 浏览:287
脚本会被杀毒软件 发布:2025-08-22 23:56:03 浏览:140
gta5车文件夹 发布:2025-08-22 23:47:58 浏览:184
编译标准 发布:2025-08-22 23:45:59 浏览:173