當前位置:首頁 » 文件管理 » docker下ftp傳輸

docker下ftp傳輸

發布時間: 2023-07-24 23:22:39

❶ docker java 主動模式訪問ftp, 隨機埠如何映射

提供一個思路,Docker 的宿主機 部署CICD的工具,然後docker容器內獲得埠的時候,通過webhook來出發宿主機的CI腳本來添加映射。。。

❷ docker容器里怎麼安裝ftp協議

1、創建容器
docker run --name centos_ssh_ftp --privileged=true -p 10.0.75.1:3222:22 -p 10.0.75.1:3223:3223 -p 10.0.75.1:3224-3299:3224-3299 -v e:/softs:/softs -it centos_ssh

說明:
--name centos_ssh_ftp #指定創建的容器的名稱為centos_ssh_ftp

--privileged=true #授權,開啟系統文件的許可權,比如可以編輯iptables

-p <宿主ip:宿主埠:容器埠> #將宿主機的指定埠映射到容器的指定埠,就是子網對外開放的埠,可以多個,也可以設置區間段如,3224-3299,這里我們把3222映射到容器的22,則外網通過宿主機的3222埠進行ssh連接,其他埠是為vsftpd被動模式准備的

-v <宿主機目錄:容器目錄> #將宿主機目錄映射到容器對應目錄,可以直接操作目錄和文件

-it <鏡像名稱> #以交互模式啟動鏡像,沒什麼可說的,啟動完後會自動進入容器的root交互終端

2、安裝ssh
先查看是否已經安裝,看有沒有sshd
chkconfig --list #該命令可以看到本機上的服務和啟動狀態,以後設置服務開機子自啟動也會用到

yum -y
install openssh-server

安裝完畢,查看chkconfig --list
sshd

手動啟動sshd
service sshd start

設置開機自啟動
chkconfig sshd on

查看是否設置成功,2-5都是on就是設置成功
# chkconfig --list sshdsshd
0:off
1:off
2:on
3:on
4:on
5:on
6:off

此時在宿主機外通過ssh遠程連接工具遠程到宿主機ip(10.0.75.1)的埠(3222)應該就可以了

3、安裝vsftpd
查看是否已經安裝了vsftpd
rpm -aq|grep vsftpd

沒有則安裝
yum -y install vsftpd

添加一個ftp用戶用來登錄
useradd ftp

給ftp用戶添加密
passwd ftp

設置ftp用戶的根目錄,先創建目錄/data/ftp
usermod -d /data/ftp ftp

將該目錄的擁有者改為ftp
chown ftp /data/ftp

修改配置文件
vi
/etc/vsftpd/vsftpd.conf

anonymous_enable=NO #不允許匿名登錄
ftpd_banner=welcome to ftp service #設置連接伺服器後的歡迎信息
max_clients=200 #指明伺服器總的客戶並發連接數為200
max_per_ip=3 #指明每個客戶機的最大連接數為3
chroot_local_user=YES #只能查看自己的根目錄
listen_port=3223 #設置FTP工作的埠號,默認的為21 這里改為3223, 如果還是21映射過來,能登錄卻取不到目錄
pasv_enable=YES #開啟被動模式
pasv_min_port=3224 #被動模式的最小埠
pasv_max_prot=3299 #被動模式使用的最大埠
pasv_addr_resolve=YES #啟用被動模式的回傳地址
pasv_address=10.0.75.1 #這里其實就是宿主機的ip

啟動vsftp
service vsftp start

使用ftp連接工具,看是否正確連接,能否創建刪除文件,是否可以訪問根目錄以外

設置開機自啟動
chkconfig vsftpd on

查看是否設置成功,2-5都是on就是設置成功
# chkconfig --list
vsftpd
vsftpd
0:off
1:off
2:on
3:on
4:on
5:on
6:off

❸ 四、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通信,其實還是通過網卡,只不過需要其他的技術來實現了。

本章節就不在演示,到後面的章節再來分析!

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726