docker 網絡原理+用ssh終端和filezilla ftp工具連接docker容器


 docker指令參考:https://www.runoob.com/docker/docker-command-manual.html

一、docker網絡

docker有bridge, host,none三種網絡模式

   #查看

   docker network ls

# 查看那些container用了bridge橋接模式(默認使用bridge模式。)
docker network inspect bridge

# docker container run -d --ne
docker run可以指定端口映射,但是容器一旦生成,就沒有一個命令可以直接修改。
通常間接的辦法是,保存鏡像,再創建一個新的容器,在創建時指定新的端口映射。

 

如下:不加參數,--network bridge,默認也是bridge模式

  宿主機的808端口,映射容器的80端口

lxg@lxg-opt:/bin$ docker container run -d --network bridge --name my-nginx-bridge -p 808:80 nginx:alpine 8e4e4d2499c34f13b49412f8e82cbeb5c535ada7c3aa2742fae9682862a464ca
lxg@lxg-opt:/bin$ docker ps
WARNING: Error loading config file: /home/lxg/.docker/config.json: stat /home/lxg/.docker/config.json: permission denied
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
8e4e4d2499c3        nginx:alpine        "nginx -g 'daemon of…"   6 seconds ago       Up 3 seconds        0.0.0.0:808->80/tcp   my-nginx-bridge
e7b5b96a7149        ubuntu              "/bin/bash"              42 hours ago        Up 29 minutes                             hopeful_davinci
lxg@lxg-opt:/bin$ 

 

 

#查看bridge

 docker network inspect bridge

剛才創建的container被被賦予了ip, 具體ip其實是無關緊要的,通過接口,對外服務映射。

 

 #端口映射是容器生成(run)時候確定的,stop后再次start,port映射關系不變。

要查詢端口映射關系

lxg@lxg-opt:/etc/apt$ docker port 8e4e4d2499c3 
80/tcp -> 0.0.0.0:808
lxg@lxg-opt:/etc/apt$ 

 

 

在啟動容器時,如果不配置宿主機器與容器的端口映射,外部程序是無法訪問容器的,因為沒有端口

四 支持的格式有三種
ip:hostPort:containerPort:映射指定地址的指定端口到容器的指定端口(不常用)
如:127.0.0.1:3306:3306,映射本機的3306端口到容器的3306端口。
ip::containerPort:映射指定地址的任意端口到容器的指定端口。(不常用)
如:127.0.0.1::3306,映射本機的3306端口到容器的3306端口。
hostPort:containerPort:映射本機的指定端口到容器的指定端口。(常用)
如:3306:3306,映射本機的3306端口到容器的3306端口。

 

#宿主機安裝docker后,會自動產生橋接ip,  docker0

lxg@lxg-opt:/bin$ ifconfig docker0   Link encap:以太網  硬件地址 02:42:99:f8:7d:94  
          inet 地址:172.17.0.1  廣播:172.17.255.255  掩碼:255.255.0.0
          inet6 地址: fe80::42:99ff:fef8:7d94/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  躍點數:1
          接收數據包:5417 錯誤:0 丟棄:0 過載:0 幀數:0
          發送數據包:10340 錯誤:0 丟棄:0 過載:0 載波:0
          碰撞:0 發送隊列長度:0 
          接收字節:391664 (391.6 KB)  發送字節:15089435 (15.0 MB)

示意圖:

 

 
         
lxg@lxg-opt:~/docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
pyt_ora             v1                  7408cf026370        17 hours ago        623MB
my_alpine_py        latest              a21502aa20ce        7 days ago          56.8MB
lxg@lxg-opt:~/dockertest/py_oracle$ docker run -it -p 8888:80 pyt_ora:v1
root@56957bf9e068:/# 

容器的80端口映射到host機的8888端口

 

二、向容器安裝ssh服務,用putty shell終端和filezilla工具連接容器

參考:https://blog.csdn.net/ypbsyy/article/details/80529101

linux整體分為2個系列,找基礎鏡像時候要注意用的是什么系列。我用的debian系列

  (1)debian系列  ( apt管理軟件包),如ubuntu

  (2)紅帽系列 (yum  管理軟件包),如centos,紅旗linux

 

1.運行、進入容器container,安裝ssh服務

root@8cdd3a88548c:/opt/data/oracle-instantclient# apt install openssh-server

配置

root@8cdd3a88548c:/opt/data/oracle-instantclient# vim /etc/ssh/sshd_config 
Port 22 前面的注釋去掉(開啟22號端口)
PermitRootLogin yes UsePAM no

 

啟動ssh服務

root@8cdd3a88548c:/# /usr/sbin/sshd -D &
[2] 120   (返回的是進程號)
或者:root@8cdd3a88548c:/#service ssh start

修改root密碼
root@8cdd3a88548c:/ passwd
123456xxxx

 

保存成新的鏡像文件,刪除舊的鏡像

docker commit container_id  new_image_name:tag_version

保存新鏡像
lxg@lxg-opt:~/dockertest/py_oracle$ docker commit 56957bf9e068 pyth_ora:v2

運行新鏡像

lxg@lxg-opt:~/$ docker run -it --name pyth_oracle -p 8888:22 pyth_ora:v2

容器名稱:pyth_oracle, 宿主機端口8888映射容器的22端口。

lxg@lxg-opt:~/dockertest/py_oracle/oracle-instantclient$ docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                          NAMES
8cdd3a88548c        pyth_ora:v2         "/bin/bash"         About an hour ago   Up About an hour    80/tcp, 0.0.0.0:8888->22/tcp   pyth_oracle

 

從其他機器,用putty和filezilla登入容器

(1)直接ssh

lxg@lxg-opt:~/dockertest/py_oracle/oracle-instantclient$ ssh -p 8888 root@localhost
The authenticity of host '[localhost]:8888 ([::1]:8888)' can't be established.
ECDSA key fingerprint is SHA256:rfHRmew75FymQIIxYUYspwkjgVkqQQycI9fXSE2dwXs.
Are you sure you want to continue connecting (yes/no)?

(2)遠程putty

 

 

 

  

(3)遠程filezilla

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM