當前位置:首頁 » 密碼管理 » 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訪問你的網站了 記得採納啊

熱點內容
壓縮和r 發布:2025-08-22 22:30:42 瀏覽:14
sql獲取小時 發布:2025-08-22 22:10:58 瀏覽:670
大同網通dns伺服器地址 發布:2025-08-22 22:02:22 瀏覽:591
javarsa的是 發布:2025-08-22 21:51:58 瀏覽:712
ftp解析域名解析 發布:2025-08-22 21:48:30 瀏覽:538
與佛論道加密 發布:2025-08-22 21:41:42 瀏覽:345
cs架構語言 發布:2025-08-22 21:34:35 瀏覽:883
安防監控存儲 發布:2025-08-22 21:20:38 瀏覽:800
java高級培訓哪裡好 發布:2025-08-22 21:16:56 瀏覽:170
套杯演算法 發布:2025-08-22 21:15:20 瀏覽:253