Docker 容器化部署技術

2021-12-24 糙科技

文章:Python數據分析實例

本文主要介紹Docker容器技術概述、Docker的安裝及相關常見操作命令。

Docker容器技術概述

Docker重新定義了程序開發測試、交付和部署的過程。

隨著雲計算技術的深入發展,使用虛擬伺服器代替傳統的物理伺服器越來越常見。

伺服器虛擬化的思想是在性能強勁的伺服器上運行多個虛擬機,每個虛擬機運行獨立的作業系統與相應的軟體。通過虛擬機管理器可以隱藏真實機器的物理配置。其中虛擬機中運行的作業系統稱為客戶作業系統(Guest OS),伺服器運行的作業系統稱為主機作業系統(Host OS)。

物理伺服器運行著主機作業系統,虛擬機管理器進行硬體虛擬化,向虛擬機提供CPU、內存、網絡、顯卡等虛擬設備,虛擬機運行著客戶作業系統和應用程式。

有一種技術不進行硬體虛擬化,就能讓虛擬機直接使用物理伺服器的CPU、內存、網絡等,即容器技術。在一臺物理伺服器上安裝Linux作業系統,通過容器技術創建多個虛擬伺服器,這些虛擬伺服器和物理伺服器共用Linux內核。

Docker容器技術共享伺服器Linux作業系統內核和文件系統,性能得到極大提高,並不像虛擬機那樣模擬 一個完整的作業系統,卻提供虛擬機一樣的效果。

虛擬機是作業系統級別的隔離,容器是進程級別的隔離。

Docker是開源的應用容器引擎,開發者可以將應用及其依賴的軟體一起打包到容器中,實現一次部署到處運行的效果。當應用切換伺服器時,再次部署相當於複製一個文件的操作,節約大量的安裝部署時間。

Docker容器技術優勢

1、啟動快、解決虛擬機資源消耗問題

啟動容器相當於啟動本機一個進程,啟動速度快。一臺電腦運行一個Linux虛擬機可能會卡頓,卻可以使用Docker虛擬幾十甚至上百臺虛擬Linux伺服器,容器僅佔用用到的資源,多個容器可共享資源。

2、體積小、快速部署

開發的應用在自己電腦上運行,換一臺機器可能無法運行,需要環境配置。

使用Docker可以將應用程式及依賴包打包在一個文件裡,運行這個文件就會啟動虛擬伺服器。

3、提供一次性環境

啟動或關閉一個虛擬伺服器就像啟動或關閉一個進程一樣簡單、快速。

4、組建微服務架構

通過多個容器,一臺機器可以跑很多虛擬伺服器,一臺機器上可以虛擬出微服務架構,也可以模擬出分布式架構。

Docker的安裝部署與使用

下載網址:https://docs.docker.com/

一、Windows下安裝Docker

雙擊 Docker Desktop Installer.exe 運行安裝程序,在 Windows 上安裝 Docker 桌面應用。

1)首先確保windows開啟虛擬化功能

勾選確定後,重啟電腦生效,在任務管理器中即可查看虛擬化功能是否開啟

2)出現提示時,確保在「配置」頁面上選擇「啟用 Hyper-V Windows 功能」或「為 WSL 2 安裝所需的 Windows 組件」選項。

按照安裝嚮導上的說明授權安裝程序並繼續安裝。

安裝成功後,單擊關閉完成安裝過程,最後Docker成功啟動如下圖所示。

註:

安裝重啟後,docker會啟動失敗,不用慌,直接根據提示點擊連結下載更新wsl版本並安裝即可解決。

3)配置鏡像加速

後續進一步介紹伺服器中Linux(Ubuntu)系統下Docker安裝與使用。

二、Docker的命令使用方法

參考:https://docs.docker.com/go/guides/

操作工具:利用Win10自帶的powershell命令終端以管理員身份打開,執行Docker操作命令。

查看Docker命令的幫助信息,查看常見命令

1、查看Docker命令的幫助信息

docker --help  #docker全部命令幫助信息docker command --help  #docker具體命令commad的幫助信息

2、查看docker信息和版本docker info #容器的池、已用數據大小、總數據的大小、基本容器大小、當前運行容器數量等。docker version #查看docker版本

3、鏡像操作

1)搜索鏡像,查看網上已經做好的容器鏡像

docker search python

我們也可以製作包含自己應用或服務的鏡像文件,此文件共享給他人,即可直接使用Docker打開容器

2)網絡中拉取下載鏡像

docker image pull <repository>:<tag>

或docker pull <repository>:<tag>

下載倉庫Python鏡像

3)導入下載好的容器鏡像文件docker load < image_xxx.tar

4)查看當前已有鏡像docker images

註:以上為拉取的Python鏡像

REPOSITORY:鏡像遠程倉庫源

TAG:鏡像標籤    

IMAGE ID :鏡像ID

CREATED :鏡像創建時間

SIZE :鏡像大小

5)刪除鏡像(通過鏡像名稱或id來指定刪除)

docker rmi <鏡像ID或名稱>

6)刪除所有的鏡像

docker rmi $(docker images -q)

4、創建並運行容器

docker run <容器名稱>

docker run -dit --name="容器名稱"  鏡像ID或名稱 /bin/sh

#創建一個名為python~的容器。

5、查看容器docker ps -a #查看所有容器docker ps -l #列出最近一次啟動的容器

註:創建不同容器ID是不一樣的,但利用的鏡像文件ID是創建時引用決定的

6、進入容器

docker exec -it <容器名>/bin/bash

docker exec -it <容器ID> bash

註:可知這裡的容器是帶Python環境的Linux系統

7、複製容器裡文件、目錄到本地伺服器

1)從容器裡面拷文件到宿主機:docker cp  CONTAINER: SRC_PATH  DEST_PATH

docker cp 容器名:要拷貝的文件在容器裡面的路徑    要拷貝到宿主機的相應路徑

2)從宿主機拷文件到容器裡面:docker cp  SRC_PATH  CONTAINER: DEST_PATH

docker cp 要拷貝的文件路徑 容器名:要拷貝到容器裡面對應的路徑

註:不管容器有沒有啟動,拷貝命令都會生效

8、停止、啟動、重啟、退出容器

docker stop <容器ID>

docker start <容器ID>

docker restart <容器ID>

exit或ctrl+d  #退出容器

9、刪除容器(刪除前先停止該容器運行)

docker stop <容器ID>

docker rm <容器ID> #刪除單個容器

docker rm/kill $(docker ps -a -q)  #停止所有容器

10、容器的備份和恢復

docker commit -p<容器ID>備份命名  #備份,導出到本地

docker save 備份名> 導出本地容器路徑全名

docker load -i 本地容器路徑   #恢復容器

- 合作、交流、轉載請添加微信 moonhmily1 -


相關焦點

  • 一分鐘玩轉Docker容器化部署
    隨著以Docker為代表的容器化技術的普及,目前Devops實踐大多會採用容器(如Docker、K8s)這樣的方式來作為微服務應用部署運行的載體,並通過容器的彈性擴展來實現快速擴容和縮容,從而更快地響應業務、更好地利用資源。
  • Docker 容器化部署運維 OpenStack 和 Ceph
    當前,以 OpenStack 為代表的 IaaS 開源技術和以 Docker 為代表的 PaaS/CaaS 容器技術日益成熟,二者如何強強聯合
  • .net 4.5部署到docker容器
    .NET FX 應用程式也是可以容器化的,容器化的選項有兩個:部署到windows容器部署到linux容器部署到
  • 容器化 | .NET 4.x on Docker 體驗(1)
    自從Windows Server 2016版開始,原生Docker就得到了支持,在這之前,想要在Windows系統上運行Docker(包括Windows 10),都得先裝一個Hyber-V的虛擬機,然後在虛擬機上跑Docker,完全無法發揮Docker在進程隔離級別的優勢。
  • Openstack容器化部署研究之:Kolla離線製作Openstack服務Docker容器鏡像
    1、前言作為擁抱Docker容器技術的代表,Kolla已成為當前Openstack生態圈中最為熱門的項目之一。
  • 使用 Docker 容器化 Django Web 應用
    在這篇文章中,我將展示如何使用 Docker 容器化現有項目。
  • Docker 工作原理及容器化簡易指南
    而在與 Kubernetes 相結合後,它使應用集群部署和管理變得更方便。這使得 Docker 深受軟體開發者的喜愛,越來越多的開發者開始使用 Docker。它是構建、測試、部署和發布容器化應用的平臺。稱其為平臺是因為 Docker 其實是一套用於管理與容器相關的所有事物的工具。作為 Docker 的核心,接下來我們將深入探討容器。
  • ​Docker容器化Jenkins+碼雲+Docker+華為鏡像容器實現CI/CD
    點擊上方"AllTests",選擇"設為星標"第一時間關注技術乾貨!
  • 部署 Graylog 日誌系統 - 每天5分鐘玩轉 Docker 容器技術(92)
    與 ELK 一樣,Graylog 的部署方案很靈活,快速搭建一個 all-in-one 的環境對於學習很有益處;部署一個高可用高伸縮性的集群對於生成環境也是必要的。接下來我們將在容器環境下搭建 Graylog。部署 GraylogGraylog 及其相關組件都將以容器的方式部署。
  • ELK 完整部署和使用 - 每天5分鐘玩轉 Docker 容器技術(90)
    上一節我們已經部署了容器化的 ELK,本節討論如何將日誌導入 ELK 並進行圖形化展示。
  • 容器技術|Docker三劍客之Compose
    三劍客簡介docker-machinedocker技術是基於Linux內核的cgroup技術實現的,那麼問題來了,在非Linux平臺上是否就不能使用docker技術了呢?答案是可以的,不過顯然需要藉助虛擬機去模擬出Linux環境來。
  • Docker for 開發:容器化你的應用
    不同於使用一個百科全書式的方法來使用Docker的所有功能和命令,我將介紹容器化開發人員的環境的主要的Docker功能。這篇文章是關於利用Docker的容器化能力的一系列文章中的第一篇,它很容易構建一個可以在任何時間共享和運行的應用程式開發環境。
  • NBU 基於 Docker 容器的備份及恢復
    Veritas 開發了一款容器化的 NetBackup  客戶端,可以將其部署為容器,用於保護其動態環境中的持久性應用程式數據。通過  Docker Enterprise 平臺認證,Docker和Veritas能夠協手支持生產環境,為客戶提供平穩的部署。
  • PHP項目Docker化指南
    文章亮點將PHP應用及其依賴的服務容器化步驟如何將應用容器鏡像的構建自動化應用容器如何快速部署到測試環境和生產環境中快速上手PHP官方在 hub.docker.com 上維護了官方的PHP Docker鏡像,包含了從PHP 5.5到7.0的多種不同版本的鏡像。
  • docker-4:mac使用docker部署開發用rocketmq
    為了開發方便,有時需要在本地部署rocketmq,使用docker是一個高性價比的方式,故有此文。
  • 基於docker的mysql部署
    化,甚至一切皆可docker。資料庫mysql,相信對於研發人員來說都不陌生,特別是後臺應用,mysql更是基石,因此本文將為大家簡單介紹mysql的容器化安裝。這裡假設你已經安裝的docker環境。   創建容器,啟動mysqldocker run
  • 使用Docker Compose部署SpringBoot應用
    使用Compose你可以用YAML文件來配置你的應用服務,然後使用一個命令,你就可以部署你配置的所有服務了。相關推薦Docker容器的日誌處理Spring Boot 應用容器化之 Docker、GradleDocker入門【實戰原創】SpringBoot應用docker化並發布到遠程伺服器安裝下載Docker Compose:curl -L https://get.daocloud.io/docker/compose/releases
  • 讓博客Docker化,輕鬆上手Docker
    Docker是一個有趣的技術,在過去的兩年已經從一個想法變成了全世界的機構都在採用來部署應用的技術。
  • 微服務中的容器技術---Docker(一),Docker的安裝和使用
    概述在微服系統中,因為服務特別多,如果手動部署以及啟動、重啟等工作會比較繁瑣,這裡會涉及到自動化部署,自動化部署就需要用到容器技術
  • 玩轉docker容器編排調度 docker-compose、docker-swarm
    然後執行 docker-compose up命令,一鍵部署app。我們得到的是一個project,注意這裡的這個project依然是一個單機的應用,相對於拆分前來說,現在的project是一個容器化後的單機應用。