Docker容器進入的4種方式

来源:http://www.cnblogs.com/gyadmin/archive/2017/11/10/7814256.html
-Advertisement-
Play Games

在使用Docker創建了容器之後,大家比較關心的就是如何進入該容器了,其實進入Docker容器有好幾多種方式,這裡我們就講一下常用的幾種進入Docker容器的方法。 進入Docker容器比較常見的幾種做法如下: 使用docker attach 使用SSH 使用nsenter 使用exec 一、使用d ...


 在使用Docker創建了容器之後,大家比較關心的就是如何進入該容器了,其實進入Docker容器有好幾多種方式,這裡我們就講一下常用的幾種進入Docker容器的方法。 進入Docker容器比較常見的幾種做法如下:
  • 使用docker attach
  • 使用SSH
  • 使用nsenter
  • 使用exec
一、使用docker attach進入Docker容器   Docker提供了attach命令來進入Docker容器。   接下來我們創建一個守護態的Docker容器,然後使用docker attach命令進入該容器。
  1. $ sudo docker run -itd ubuntu:14.04 /bin/bash  
  然後我們使用docker ps查看到該容器信息,接下來就使用docker attach進入該容器
  1. $ sudo docker attach 44fc0f0582d9  
    可以看到我們已經進入到該容器中了。     但在,使用該命令有一個問題。當多個視窗同時使用該命令進入該容器時,所有的視窗都會同步顯示。如果有一個視窗阻塞了,那麼其他視窗也無法再進行操作。 因為這個原因,所以docker attach命令不太適合於生產環境,平時自己開發應用時可以使用該命令。 二、使用SSH進入Docker容器   在生產環境中排除了使用docker attach命令進入容器之後,相信大家第一個想到的就是ssh。在鏡像(或容器)中安裝SSH Server,這樣就能保證多人進入 容器且相互之間不受干擾了,相信大家在當前的生產環境中(沒有使用Docker的情況)也是這樣做的。但是使用了Docker容器之後不建議使用ssh進入到Docker容 器內。關於為什麼不建議使用,請參考如下文章: 為什麼不需要在 Docker 容器中運行 sshd 三、使用nsenter進入Docker容器   在上面兩種方式都不適合的情況下,還有一種比較方便的方法,即使用nsenter進入Docker容器。關於什麼是nsenter請參考如下文章: https://github.com/jpetazzo/nsenter 在瞭解了什麼是nsenter之後,系統預設將我們需要的nsenter安裝到主機中 如果沒有安裝的話,按下麵步驟安裝即可(註意是主機而非容器或鏡像) 具體的安裝命令如下:
  1. $ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz  
  2. $ tar -xzvf util-linux-2.24.tar.gz  
  3. $ cd util-linux-2.24/  
  4. $ ./configure --without-ncurses  
  5. $ make nsenter  
  6. $ sudo cp nsenter /usr/local/bin  
安裝好nsenter之後可以查看一下該命令的使用。     nsenter可以訪問另一個進程的名稱空間。所以為了連接到某個容器我們還需要獲取該容器的第一個進程的PID。可以使用docker inspect命令來拿到該PID。 docker inspect命令使用如下:
  1. $ sudo docker inspect --help   
inspect命令可以分層級顯示一個鏡像或容器的信息。比如我們當前有一個正在運行的容器   可以使用docker inspect來查看該容器的詳細信息。
  1. $ sudo docker inspect 44fc0f0582d9  
  由其該信息非常多,此處只截取了其中一部分進行展示。如果要顯示該容器第一個進行的PID可以使用如下方式
  1. $ sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9  
    在拿到該進程PID之後我們就可以使用nsenter命令訪問該容器了。
  1. $ sudo nsenter --target 3326 --mount --uts --ipc --net --pid  
  1. $ sudo nsenter --target 3326 --mount --uts --ipc --net --pid  
其中的3326即剛纔拿到的進程的PID 當然,如果你認為每次都輸入那麼多參數太麻煩的話,網上也有許多做好的腳本供大家使用。 地址如下: http://yeasy.gitbooks.io/docker_practice/content/container/enter.html http://www.tuicool.com/articles/eYnUBrR   四、使用docker exec進入Docker容器   除了上面幾種做法之外,docker在1.3.X版本之後還提供了一個新的命令exec用於進入容器,這種方式相對更簡單一些,下麵我們來看一下該命令的使用:
  1. $ sudo docker exec --help   
    接下來我們使用該命令進入一個已經在運行的容器
    1. $ sudo docker ps  
    2. $ sudo docker exec -it 775c7c9ee1e1 /bin/bash  

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先簡單放一下用到的: MYSQL : 5.6版本 python3 powershell。 將csv導入mysql,主要就是用mysql的load data功能實現,其他前輩也都講得很清楚了,這裡簡單列一下語句(註意enclosed只有一個雙引號,此外‘忽略’那裡,rows表示的是列,lines表示的 ...
  • oracle資料庫管理系統常見的錯誤之一如下: Listener refused the connection with the following error:ORA-12519, TNS:no appropriate service handler foundThe Connection des ...
  • 一、Oracle資料庫操作 1、創建資料庫 create database databasename 2、刪除資料庫 drop database dbname 3、備份資料庫 完全備份 exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y de ...
  • SQL函數 coalesce 功能: 返回參數中第一個非null的值。 語法: coalesce(參數1,參數2,參數3,...);返回第一個非null的值。 一般情況下會與Nullif()函數一起使用。 ...
  • 1、獲取信息 2、篩選信息 3、整理數據 例如用Excel整理記憶體使用情況,這裡把獲取的時間和記憶體信息放在Excel內部,並把記憶體列用Excel分列,用時間和使用的記憶體大小列可以製作出一張記憶體使用趨勢圖;同理也可以製作CPU、cached及各個微服務的CPU和記憶體趨勢圖。 ...
  • Shell按行讀取文件的方法有很多,下麵寫出三種方法: 寫法一: 寫法二: 寫法三: 註:for迴圈讀行操作,與while讀行的區別 while是完全按行讀取,不管行內有多少段文字; for是按行讀取,如果行內文字有空格,則分開讀取,即一次讀取一個字元串。 ...
  • 1》什麼是Quota 在Linux中,由於是多用戶,多任務的環境,所以會有多用戶共同使用一個硬碟空間的情況發生,如果其中有少數幾個用戶大量占用掉了硬碟空間的話,那肯定影響其他用戶的使 用許可權,因此管理員應該適當限制硬碟的空間給用戶,以妥善分配系統資源,使磁碟的容量使用較為公平;舉例來說,我們用戶的默 ...
  • 上一節 我們學習了: IIC介面下的24C02 驅動分析: http://www.cnblogs.com/lifexy/p/7793686.html 接下來本節, 學習Linux下如何利用linux下I2C驅動體繫結構來操作24C02 1. I2C體繫結構分析 1.1首先進入linux內核的driv ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...