外网访问docker
A. 如何外网访问docker套件在群晖上部署的ubuntu
下载完成后点击启动
然后就会弹出创建该镜像的容器的向导
随便取名字 端口自己按需映射或者索性勾选自动映射
这里按需修改,默认也行
B. 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
C. docker会直接开放这个端口的外网访问,怎么屏蔽这种特性
1.通过手动更改Iptables来实现
2.docker run -p 内网ip:port:port
D. docker镜像能上网吗
docker 镜像是无法连接外网,只有通过部署这个镜像的容器才能实现访问外网。查看此链接,详细介绍如何使用docker镜像,docker容器等功能,网页链接
E. docker配置web服务后,要怎么让外网访问
直接在路由器你们做个端口映射 把你的192.168.0.254的80端口发布到Internet 就可以使用的你联通的外网IP访问你的网站了 记得采纳啊
F. 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
G. centos下docker容器外网怎么访问
当前Ubuntu 系统下的 Docker 的安装包只提供64位。如果你想运行32位的 Docker,你需要。 安装 Docker 通过 apt-get 安装 Docker 简直是小菜一碟。 $ sudo apt-get install docker.io 如果你不是 root 组的用户,你可以把自己加入到 docker 用户...
H. 如何让Windows 8/Windows 10用户也用上Docker
默认情况下Boot2Docker需要安装Virtualbox,而不支持Hype-V,这很麻烦,还得修改BCD引导文件,因为Hyper-V和Virtualbox不兼容。
现在好了,有人将其做成可以支持Hyper-V的光盘版,可以直接下载使用最新的ISO文件。步骤:
1. 首先下载前面所述的ISO文件。
2. 新建虚拟机,选择第一代。
3. 确保虚拟网络能访问外部网络,因为后面需要从外网Docker Hub下载容器映像。
4. 不要新建虚拟硬盘。
5. 然后启动虚拟机,运行ifconfig查看IP地址,比如是192.168.0.113。
6. 接下来关闭虚拟机,在虚拟机里新建虚拟硬盘,并用fdisk进行分区并格式化。然后再创建差异磁盘,为甚要创建差异磁盘,这是为了方便,今后可以每个容器放在独立的差异磁盘里,方便今后测试调试。
7. 为了方便,可以通过Putty等SSH工具连接到Boot2Docker虚拟机,并用docker version查看版本信息。
注意用户名和密码:docker/tcuser
8. 运行以下命令,构建WordPress博客的容器:
docker build -rm -t hualaisi /wordpress git://github.com/jbfink/docker-wordpress.git
其中 hualaisi 可以用任意名称代替。
根据网络速度,等待一段时间,等wordpress下载构建完毕。
9. 运行以下命令,启动WordPress容器,并设置该容器的NAT端口为80:
docker run --name wordpress -d -p 80:80 hualaisi /wordpress
10. 可以运行以下命令查看当前环境里运行的docker容器:
docker ps -a
最后,可以直接在Windows里打开Web浏览器,输入以下地址(注意IP地址和端口号),即可配置并访问构建在docker容器里的WordPress博客。
http://192.168.0.113
I. docker 外网访问不了docker容器
出现问题的原因有3种,
1:你安装docker的服务器没有关闭防火墙,也就是说你访问你安装docker的物理机都访问不了,物理机里的docker就更访问不了了。
2:docker在创建镜像的时候没有做端口映射,这是就出现能访问物理机,但访问不了docker,你可以使用docker ps 查看镜像的端口映射情况。
3:端口映射不正确,如你docker中某一容器的8080端口映射到安装docker物理机的80端口,加入你在镜像里面安装了tomcat,但是你tomcat使用的是8080以外的任意端口,这是你访问物理机ip+80端口也无法访问。
J. 基于 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的浏览器中,输入这个地址,加上服务的端口即可启用了。