1. 程式人生 > >乾貨 | Docker容器:如何根據監聽埠號查詢到對應容器?

乾貨 | Docker容器:如何根據監聽埠號查詢到對應容器?

點選上方“中興開發者社群”,關注我們

每天讀一篇一線開發者原創好文

640?wx_fmt=png

問題引入:在一個已啟動了N多個容器Linux作業系統的宿主機上,新啟動一個對映到宿主機埠號為portM的容器時,提示埠被佔用。如何通過已佔用的埠號找到佔用埠的容器?!

向來,喜歡提供2中方法~

方法1:囉嗦一點,向上使用逐級查詢到使用該埠號的容器ID

分析步驟:

1)根據提示佔用的埠號portM找到佔用埠號的程序,例如:查詢佔用443埠號的程序

640?wx_fmt=png

2)根據PID查詢到使用的程式

640?wx_fmt=png

3)根據2)中的PID查詢到使用父程序PPID的程式

640?wx_fmt=png

4)根據3)中的PID繼續向上查詢到使用父程序PPID的程式

640?wx_fmt=png

5)根據4)中的PID繼續向上查詢到使用父程序PPID的程式

640?wx_fmt=png

至此,已經找到使用該父程式的docker容器,容器號為:f41ce0c15a91b544641b5e461fc9750aa7da03b4aea7ae62d96a965428e2134d

6)驗證容器是否使用了443埠,停止該容器,443埠釋放,未佔用

640?wx_fmt=png

方法1雖然方法1可以清晰我們的查詢過程,但是是不是覺得很笨,很麻煩?!那麼下面試試這個簡單的方法吧

方法2:docker inspect <CONTAINER ID>可以獲取容器的pid,通過docker ps可以獲取容器的容器id,因此可以將這兩個命令結合在一起

同方法1的1),2)步,查詢到使用該443埠的父程序PID 35512,然後使用docker inspect -f '{ {.State.Pid} } { {.ID} }' $(docker ps -a -q) |grep <PID>命令,查詢到對應該父PID的容器ID

640?wx_fmt=png

640?wx_fmt=png

相關推薦

自己動手寫servlet容器 2.2: 接收請求

監聽埠接收請求 上一步中我們已經定義好了Server介面,並進行了多次重構,但是實際上那個Server是沒啥毛用的東西。現在要為其新增真正有用的功能。大師說了,飯要一口一口吃,衣服要一件一件脫,那麼首先來定個小目標——啟動ServerSocket監聽請求,不要什麼多執行緒不

windows bat系列5檢視&終止程序

1.    netstat說明:顯示協議統計和當前 TCP/IP 網路連線。其相關命令列引數如下: -a 顯示所有連線和偵聽埠。 -b 顯示在建立每個連線或偵聽埠時涉及的可執行程式。 在某些情況下,已

oracle修改(1521)

修改oracle監聽埠1,檢視當前監聽狀態[[email protected] ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 05-JUL-2018 14:26:26

修改oracle資料庫

oracle預設埠號是1521.很容易就被黑客掃描到然後天天惦記你的資料庫 所以修改預設埠號就很有必要了 1、首先檢視監聽狀態 lsnrctl status 2、關閉監聽 lsnrctl stop 3

【驗證】nodejs單執行緒理解一個nodejs開兩個,執行時是否是兩個執行緒?

一個nodejs開兩個監聽埠,執行時是否是兩個執行緒?因為剛接觸nodejs不久,以上問題,困惑了我很久,一直想不明白。既然想不明白就直接上程式碼驗證一下,看結果是什麼樣。var express1 = require('express'); var express2 = re

React Native 切換(紅屏Unable to load from asset 'index & packager 卡在graph, done.)

開開心心開始編譯執行,結果一個大紅屏。。。 轉頭也發現我們的packager卡在了Loading dependency graph, done. 上網搜尋,發現,我不是一個人。但是按照很多同仁的法子,我掉到了另一個坑。 也許你也看到很多同仁告訴你,你可以去這樣做: 1、建

在 Windows Server Container 中運行 Azure Storage Emulator(一)能否自定義地址?

list use contos 域名 嘗試 accounts res conf 是我   我要做什麽? 改 ASE 的監聽地址。對於有強迫癥的我來說,ASE 默認監聽的是 127.0.0.1:10000-10002,這讓我無法接受,所以我要將它改成域名 + 80 端口的方

Oracle ORA-12541TNS程序

dem 適配器 proto .sh min local windows 退出 %s Oracle ORA-12541:TNS:無監聽程序

Vue元件通訊之二事件函式$emit/$on/$off

在vue2.x版本中自定義時間都需要通過$emit/$on/$off函式來進行觸發、監聽和取消監聽。 如果瞭解過JavaScript的設計模式-------觀察者模式,一定知道dispatchEvent和addEventListener這兩個方法。Vue元件中也有與之類似的模式,子元件用$emi

Oracle資料庫

問題描述: Oracle資料庫安裝完成之後,在其他機器無法遠端訪問該資料庫。 解決方法: 1.確保網路和防火牆開通(防火牆開通1521埠) 2.檢視1521埠是否啟用 netstat -n|grep 1521 如果命令執行結果中,沒有1521,說明該埠監聽沒

php-fpm 啟動後沒有9000

netstat -an未發現監聽9000埠。檢視/var/log/php5-fpm.log一切正常。 隨後檢視centos/usr/local/php/etc/php-fpm.con (ubuntu:/etc/php5/fpm/pool.d/www.conf,) 發現li

Windows8 Metro介面下的StreamSocketListener物件做

StreamSocketListener 是一個很方便的伺服器監聽物件,利用它我們可以很簡單的實現對伺服器埠的監聽。使用StreamSocketListener物件進行監聽需要以下幾步: 1. 例項化一個StreamSocketListener物件 2. 註冊例項收到連線時的事件 3.

Linux C

int socket(int domain,int type,int protocol); domain引數指定協議族 type引數指定這個套接字的通訊型別 protocol引數指定使用的協議 AF_UNIX         UNIX域協議

oracleTNS:程式無法分發客戶機連線

掛上vpn的時候,PL/SQL連線到oracle的時候,顯示ORA-12518:監聽程式無法分發客戶機連線。如下圖:       一、【問題描述】    最近,在系統高峰期的時候,會提示如上的錯誤,致使無法連線到伺服器上的資料庫。 二、【分析過程】

centos6.8 修改php-fpm的

主要是修改php-fpm的監聽埠,然後修改nginx的配置,對應php-fpm的監聽埠。 修改 /etc/php-fpm.d/www.conf 檔案,將監聽的 listen = 127.0.0.1:9000 改成 listen = 127.0.0.1:8999 serv

Android學習筆記1基於的事件處理過程

基於監聽的事件處理過程 記錄一:安卓介面互動處理事件的兩個方式 (1)基於監聽的事件處理 (2)基於回撥的事件處理 基於回撥的事件處理日後再寫,先學習基於監聽的事件處理 通常以下步驟: (1)例項化物件 (2)為事件源物件新增監聽器物件,例如set...List

lsof/netstat命令的一個重要作用 根據程序查根據查程序

  我們知道, 根據ps -aux | grep xxx就是很快實現程序名和程序號的互查, 所以我們只說程序號pid就行。 如下示例中, 程序pid常駐。         1.  根據程序pid查埠:       &

flume-NG採用syslogtcp方式

一、採集說明 本採集方式使用socket通訊的方式,向flume傳送資料進行採集,採集後的資料儲存到hdfs和kafka。 二、配置檔案 1、source採集層 port.properties # set agent name agent.

修改WMB執行組

注:僅適用於修改HTTP監聽埠,HTTPS、SOAP並沒有修改 預設情況下MB的監聽級別是代理監聽級別,一個代理只監聽一個埠號,執行組中的訊息流通過具體的url來訪問。 如果你想監聽多個埠除了建立多個代理這種方法外還可以選擇為每個執行組指定監聽的埠,更節省資源。 1.檢視目