外網訪問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的瀏覽器中,輸入這個地址,加上服務的埠即可啟用了。