【 Docker 容器詳細介紹和說明】

Docker 容器詳細介紹和說明

      • Docker 容器詳細介紹和說明
      • Docker 安裝步驟(以Ubuntu為例):
      • 使用Docker創建并運行容器:
      • VSCode遠程連接Docker容器:
      • 步驟1:配置Docker環境
      • 步驟2:配置PyCharm
      • 步驟3:測試連接
      • docker 容器常用命令

Docker 容器詳細介紹和說明

Docker容器是什么?
Docker容器是一種輕量級、可移植的軟件打包和運行環境,它允許開發者將應用及其依賴以獨立的單元進行分發和部署。每個容器都運行在一個隔離的環境中,具有自己的文件系統、網絡空間和資源限制。容器與宿主機共享內核,但通過Linux命名空間(namespaces)和控制組(cgroups)技術實現了進程、網絡、文件系統等層面的隔離,使得多個容器可以在同一臺物理機或虛擬機上高效并行運行。

Docker容器的特點:

  1. 標準化: 保證應用在開發、測試、生產環境的一致性。
  2. 便攜性: 可以在任何安裝了Docker引擎的機器上運行。
  3. 資源隔離: 確保容器內的應用程序不會影響到其他容器或宿主機。
  4. 微服務架構友好: 適合構建基于微服務的應用程序,每個服務可以封裝在一個單獨的容器中。
  5. 快速啟動: 相對于傳統虛擬機,容器啟動速度快,資源消耗更少。

Docker容器的使用場景:

  • 微服務架構中的服務部署
  • CI/CD流程中的持續集成與交付
  • 應用程序生命周期管理
  • 面向開發者的本地開發環境設置
  • 云原生應用的構建與發布

Docker 安裝步驟(以Ubuntu為例):

# 更新apt包索引
sudo apt-get update# 安裝必要的一些系統工具
sudo apt-get install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common# 添加Docker的官方GPG密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 添加Docker的APT倉庫
sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"# 更新apt包索引,并安裝Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io# 啟動Docker服務并設置開機自啟
sudo systemctl start docker
sudo systemctl enable docker

使用Docker創建并運行容器:

# 拉取一個鏡像,例如官方的nginx鏡像
docker pull nginx# 創建并運行一個新容器
docker run --name my_nginx -d -p 8080:80 nginx# 上述命令含義:
# --name 給容器命名
# -d 表示后臺運行
# -p 將主機端口映射到容器端口# 測試訪問容器
curl http://localhost:8080# 查看正在運行的容器
docker ps# 停止并移除容器
docker stop my_nginx
docker rm my_nginx

VSCode遠程連接Docker容器:

為了能在VSCode中遠程連接并編輯運行在Docker容器內部的應用代碼,你可以使用VSCode的Remote Development擴展功能,具體步驟如下:

  1. 在VSCode中安裝插件 ms-vscode-remote.vscode-remote-extensionpack,該擴展包含用于遠程開發的支持。
  2. 運行你的Docker容器時,確保掛載本地目錄到容器內作為工作區(如 -v /path/to/local/code:/workspace),并且開啟持久化TTY以便于交互式登錄(如 -it)。
  3. 在VSCode的命令面板(Ctrl+Shift+P)中選擇“Remote-Containers: Attach to Running Container”,然后從列表中選擇你已運行的Docker容器。
  4. VSCode會自動加載容器內部的工作區,你現在可以直接在VSCode中編輯并運行容器內的項目代碼。

請注意,實際操作過程中可能需要根據不同的開發需求調整容器配置以及VSCode Remote-Containers擴展的設置。

在PyCharm中遠程連接Docker容器進行開發和調試,需要按照以下步驟操作:

步驟1:配置Docker環境

確保遠程服務器上已經正確安裝并運行了Docker,并且創建了一個帶有SSH服務的Docker容器。同時,容器內已安裝Python解釋器以及必要的庫。

# 在遠程服務器上創建并啟動一個帶有SSH服務的Docker容器
sudo docker run -d --name my_container \-p 2222:22 \  # 映射容器內部的22端口到主機的一個非默認端口(例如2222)-v /path/to/project:/app \  # 如果要編輯容器內的代碼,掛載本地項目目錄到容器內-e USER=root \  # 設置用戶-e PASSWD=my_password \  # 設置密碼,或者使用密鑰登錄image_name:tag# 進入容器,設置root用戶的密碼或公鑰認證(如果尚未完成)
docker exec -it my_container bash
passwd root  # 更改密碼
# 或者添加公鑰到authorized_keys文件以啟用無密碼登錄

步驟2:配置PyCharm

步驟2.1:配置遠程解釋器

  1. 打開PyCharm,在菜單欄選擇 File > Settings (Windows/Linux) 或 PyCharm > Preferences (macOS)。

  2. 在設置窗口中找到 Project: Your_Project_Name > Project Interpreter

  3. 點擊齒輪圖標然后選擇 Add > Add Remote...

  4. 選擇 SSH Interpreter 并點擊下一步。

  5. 填寫遠程服務器的 SSH 配置信息:

    • 主機名:遠程服務器IP地址或域名
    • 用戶名:遠程服務器的用戶名
    • 端口號:SSH端口,如果是上面映射的非默認端口,則填寫2222
    • Authentication type:根據實際情況選擇密碼或密鑰驗證
  6. 在下一個界面,選擇 “Use Docker Compose” 或 “Use Dockerfile” 來指定容器,或者直接選擇 “Existing interpreter” 并填入容器內的Python解釋器路徑(如 /usr/bin/python3)。

  7. 如果是通過現有的解釋器連接,可能還需要映射容器內部的項目路徑到宿主機(即你的本地開發環境)。

步驟2.2:配置部署(可選)

如果你需要將本地項目的更改同步到容器內,可以配置Deployment。

  1. 在設置窗口,轉到 Build, Execution, Deployment > Deployment,點擊"+"添加一個新的SFTP或FTPS部署配置。
  2. 填寫遠程主機的相同SSH連接信息,并指定本地與遠程路徑的映射關系。

步驟3:測試連接

完成上述配置后,你可以嘗試測試連接是否成功。若能正常連接到遠程解釋器并在PyCharm中運行、調試容器內的代碼,則表示配置成功。

docker 容器常用命令

以下是一些Docker容器常用的命令示例及其詳細說明:

  1. 查看本地鏡像

    docker images
    

    該命令用于顯示當前主機上所有的Docker鏡像列表,包括鏡像ID、標簽和大小等信息。

  2. 拉取鏡像

    docker pull ubuntu:latest
    

    此命令從Docker Hub或其他配置的鏡像倉庫下載指定標簽(這里是latest)的Ubuntu鏡像。

  3. 創建并運行容器

    docker run -it --name my_container ubuntu:latest /bin/bash
    

    這條命令將創建一個新的容器,并命名為my_container,使用的是最新版的Ubuntu鏡像。-it參數表示以交互模式運行(分配一個終端),并在容器內啟動/bin/bash shell。

  4. 列出正在運行的容器

    docker ps
    

    列出所有正在運行的容器的基本信息。

  5. 列出所有容器(包括停止狀態的)

    docker ps -a
    
  6. 進入已運行的容器

    docker exec -it my_container bash
    

    這個命令允許你在一個已經運行的名為my_container的容器中打開一個新的shell會話。

  7. 停止容器

    docker stop my_container
    

    停止指定名稱或ID的容器。

  8. 重啟容器

    docker restart my_container
    
  9. 刪除容器

    docker rm my_container
    

    刪除已停止的容器,若要強制刪除正在運行的容器,可以加上 -f 參數:

    docker rm -f my_container
    
  10. 查看容器日志

    docker logs my_container
    

    顯示指定容器的日志輸出。

  11. 提交容器為新鏡像

    docker commit my_container new_image_name
    

    將當前修改后的容器保存為新的鏡像。

  12. 更新容器資源限制

    docker update --cpu-shares 512 my_container
    

    更新容器的CPU份額等資源限制。

以上是Docker容器操作中常見的命令,實際使用時可能需要根據具體需求調整參數和選項。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719679.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719679.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719679.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

日本發動全面侵華戰爭他們在怕什么?為何不敢動陜西,

日本全面侵華戰爭之謎:恐懼與野心的交織 在二十世紀三十年代,日本帝國主義以令人發指的暴行和殘忍手段,對中國發動了全面侵華戰爭。然而,在這場戰爭中,有一個引人關注的現象:日本侵略者在進攻過程中&#…

python和nodejs一鍵安裝當前項目所有依賴

python和nodejs一鍵安裝當前項目所有依賴。群里有人問怎么快速安裝網上下載的源碼里面的依賴。所以在這里分享一下。更多問題可以自己加群917400262問我。 目錄導航 1.0 python一鍵安裝當前項目所有依賴2.0 nodejs一鍵安裝當前項目所有依賴 1.0 python一鍵安裝當前項目所有依賴…

snakemake: 基礎知識

為了有效地學習和使用 Snakemake,你需要具備一定的基礎知識。這些基礎知識將幫助你更好地理解 Snakemake 的工作原理和如何在你的項目中應用它。以下是學習 Snakemake 所需的一些基礎知識: 1. Python 編程 Snakemake 是用 Python 編寫的,并…

聊聊國內「類Sora模型」發展現狀,和 Sora 的差距到底有多大?

2024 年 2 月 16 日。 就在谷歌發布他新一代的多模態大模型 Gemini 1.5 Pro 的同一天,OpenAI 帶著新一代的文生視頻模型 Sora 再次抓住了全世界人們的眼球。 “顛覆”、“炸裂”、“變天”、“瘋狂”,類似的形容詞一夜之間簇擁在 Sora 周圍,…

網絡傳輸基本流程(封裝,解包)+圖解(同層直接通信的證明),報頭分離問題,協議定位問題,協議多路復用

目錄 網絡傳輸基本流程 引入 封裝 過程梳理 圖解 報文 解包 過程梳理 圖解 -- 同層直接通信的證明 總結 解包時的報頭分離問題 舉例 -- 倒水 介紹 自底向上傳輸時的協議定位問題 介紹 解決方法 協議多路復用 介紹 優勢 網絡傳輸基本流程 引入 首先,我們明確…

VS查看C++頭文件(.h文件)的函數列表

這里使用的是VS2019舉例 如下圖查看Actor.h文件中的函數列表 設置步驟如下圖

【d35】【Java】【力扣】28. 找出字符串中第一個匹配項的下標

題目 給你兩個字符串 haystack 和 needle ,請你在 haystack 字符串中找出 needle 字符串的第一個匹配項的下標(下標從 0 開始)。如果 needle 不是 haystack 的一部分,則返回 -1 。 示例 1: 輸入:haystac…

【大數據】通過 docker-compose 快速部署 MinIO 保姆級教程

文章目錄 一、概述二、MinIO 與 Ceph 對比1)架構設計對比2)數據一致性對比3)部署和管理對比4)生態系統和兼容性對比 三、前期準備1)部署 docker2)部署 docker-compose 四、創建網絡五、MinIO 編排部署1&…

【SQL】608. 樹節點(流控制語句 CASE + IF語句)

前述 知識點推薦學習: sql中的 IF 條件語句的用法 MySQL:if語句、if…else語句、case語句,使用方法解析 題目描述 leetcode 題目:608. 樹節點 思路 關鍵點:如何確定有沒有子節點 根節點:父節點為空內節…

基于Redo log Undo log的MySQL的崩潰恢復

基于Redo log & Undo log的MySQL的崩潰恢復 Redo log Undo log Redo log 重做日志,記錄,修改過的數據 Undo log 回滾日志,記錄修改之前的數據 兩個我不做詳細的介紹了,redo log就是記錄哪些地方被修改了 undo log是記錄修改之前我們的數據長什么樣 更新流程 我們來捋一…

python封裝,繼承,復寫詳解

目錄 1.封裝 2.繼承 復寫和使用父類成員 1.封裝 class phone:__voltage 0.5def __keepsinglecore(self):print("單核運行")def callby5g(self):if self.__voltage > 1:print("5g通話開啟")else:self.__keepsinglecore()print("不能開啟5g通…

Redis集群(主從)

1.主從集群 集群結構: 一.單機安裝redis 1.上傳壓縮包并解壓,編譯 tar -xzf redis-6.2.4.tar.gz cd redis-6.2.4 make && make install 2.修改redis.config的配置并啟動redis # 綁定地址,默認是127.0.0.1,會導致只能在本地訪問。…

Tomcat布署及優化-----JDK和Tomcat

1.Tomcat簡介 Tomcat 是 Java 語言開發的,Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,Tomcat 屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試 JSP 程序的首選。一般來說&…

C++ //練習 10.2 重做上一題,但讀取string序列存入list中。

C Primer(第5版) 練習 10.2 練習 10.2 重做上一題,但讀取string序列存入list中。 環境:Linux Ubuntu(云服務器) 工具:vim 代碼塊 /******************************************************…

Vue前端加密后的數據發送到服務器端

首先,定義了一個名為 PUBLIC_KEY 的公鑰和一個名為 PRIVATE_KEY 的私鑰。然后,通過 JSEncrypt 創建了兩個實例 encrypt 和 decrypt,分別用于加密和解密操作。 對于加密操作,調用了 encrypt.setPublicKey() 方法設置公鑰&#xff…

升級Centos7的openssh到openssh-9.6p1版本 shell腳本 漏掃整改

升級Centos7的openssh到openssh-9.6p1版本 shell腳本 漏掃整改 #!/bin/bash# 聲明: 該腳本適用于升級Centos7的openssh到openssh-9.6p1版本# 定義源碼包版本號 OPENSSH_VERSIONopenssh-9.6p1 OPENSSL_VERSIONopenssl-3.2.1 ZILB_VERSIONzlib-1.3.1# 安裝編譯環境 yum -y insta…

【前端面試題5】利用 border 屬性畫一個三角形

舉例1:利用 border 屬性畫一個三角形(小技巧) 完整代碼如下: div{width: 0;height: 0;border: 50px solid transparent;border-top-color: red;border-bottom: none; }步驟如下: (1)當我們設…

【QT+QGIS跨平臺編譯】之五十六:【QGIS_CORE跨平臺編譯】—【qgsmeshcalclexer.cpp生成】

文章目錄 一、Flex二、生成來源三、構建過程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一個替代品。它經常和自由軟件 Bison 語法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 語言寫成。 “flex 是一個生成掃描器的工具,能夠識別文本中…

Android 拍照本地圖片選擇框架適配

前言 通常技術方案的選擇、會帶來后續一些不可控的東西,這也是沒法避免的,程序開發者中同時面對、測試、領導、產品各種要求。同時在網絡上查找的資料也只是很舊的,不一定適合新設備,需要推倒重新弄 1、解決方案通過意圖選擇器做…

day6 數組 嵌套循環

1&#xff1a;打印楊輝三角 91 int arr[6][6];92 int i,j0;93 for(i0;i<6;i)94 {95 for(j0;j<i;j) 96 {97 if(j0||ij)98 {99 arr[i][j]1; …