欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文帶你快速了解和使用Docker

 更新時(shí)間:2023年05月26日 10:08:13   作者:叫我二蛋  
本文對(duì) Docker 進(jìn)行全面闡述,詳細(xì)介紹 Docker 的作用、其基本使用,如常用命令、Dockerfile 的作用及使用、Docker Compose 的作用及使用,感興趣的同學(xué)跟著小編一起來學(xué)習(xí)吧

Docker 的作用

這里以容器化發(fā)展歷程加上應(yīng)用部署為例子,對(duì) Docker 的作用進(jìn)行說明。

在只有物理機(jī)的時(shí)候,大多數(shù)開發(fā)者或運(yùn)維人員在部署一個(gè)應(yīng)用時(shí)要做以下操作(以 java 應(yīng)用為例):搭建 java 環(huán)境、maven 環(huán)境、配置環(huán)境變量、打包、運(yùn)行。這樣有幾個(gè)問題:

  • 部署慢:以上的過程都是需要手動(dòng)操作,中間但凡那個(gè)環(huán)節(jié)出問題都需要花費(fèi)時(shí)間排查,而且每次部署都需要重復(fù)做同樣的操作。
  • 成本高:一個(gè)外網(wǎng)的服務(wù)器費(fèi)用最起碼以萬為單位進(jìn)行采購(gòu),成本相對(duì)高。
  • 資源浪費(fèi):如果應(yīng)用是計(jì)算密集型,那么對(duì) cpu 要求會(huì)很高,對(duì)內(nèi)存、磁盤要求就不高,這樣一來,閑置的資源就會(huì)浪費(fèi)掉。
  • 難于擴(kuò)展遷移:如果要將 windows 服務(wù)器的應(yīng)用遷移到 linux 服務(wù)器,一定會(huì)出現(xiàn)各種問題。

在虛擬化技術(shù)出現(xiàn)后,可以在物理機(jī)上開辟多個(gè)虛擬機(jī),對(duì)物理機(jī)的資源進(jìn)行了充分的使用,且虛擬機(jī)之間的資源是隔離的,可以部署多個(gè)應(yīng)用,也降低了成本。 但是虛擬機(jī)需要安裝操作系統(tǒng),同樣會(huì)造成資源浪費(fèi)。

為了解決虛擬機(jī)安裝操作系統(tǒng)帶來的資源浪費(fèi),容器化技術(shù)就誕生了,容器化可以理解成不用安裝操作系統(tǒng)的虛擬機(jī),如下圖,

這里的 Docker 就是容器化技術(shù)最典型的代表,其通過沙箱機(jī)制依賴主操作系統(tǒng),大大的節(jié)省了資源、降低成本。除此之外,在應(yīng)用部署上,Docker 容器本質(zhì)是包含了部署應(yīng)用所需的一切資源,包括操作系統(tǒng)依賴的其他組件或應(yīng)用、數(shù)據(jù)庫(kù)、配置等,這樣在任何的環(huán)境下進(jìn)行部署時(shí)將容器里的資源展開即可部署成功。

比如:我們現(xiàn)在使用 redis 服務(wù),我們不需要去下載redis安裝包、gcc等依賴組件等操作,只需要拉取 redis 鏡像運(yùn)行即可。

所以 Docker 的作用不僅僅是節(jié)省資源、降低成本,在應(yīng)用方面也做到了自動(dòng)部署、應(yīng)用監(jiān)控的作用,更簡(jiǎn)化了開發(fā)與運(yùn)維的溝通,讓軟件協(xié)作方式發(fā)生巨大變化。

Docker 安裝

這里基于 CentOS 7 進(jìn)行 Docker 安裝,Windows 和 MAC 安裝參考Docker 官網(wǎng)。

執(zhí)行以下命令進(jìn)行安裝

yum install -y yum-utils
#設(shè)置倉(cāng)庫(kù)地址
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl start docker

Docker 常用命令

拉取鏡像:docker pull 鏡像名:<tag> 。 可以通過配置鏡像加速器加快拉取鏡像的速度。

  • 查看鏡像:docker images
  • 啟動(dòng)容器:docker run 鏡像名:<tag>
  • 查看容器:docker ps
  • 刪除容器:docker rm <-f> 容器id
  • 刪除鏡像:docker rmi 鏡像名:<tag>
  • 與容器交互:docker exec <-it> 容器id /bin/bash

容期間通信

一個(gè)宿主機(jī)上的容器默認(rèn)是可以互相通信的,但是每次啟動(dòng)容器后ip會(huì)修改,避免因ip變動(dòng)而修改配置,啟動(dòng)容器時(shí)可以給容器命名,通過容器名稱通信。命令如下

docker run --name 容器名稱 鏡像名稱 --link 要通信的容器名稱 要通信的鏡像名稱

如果多個(gè)容器都需要互相通信,這種方式就會(huì)比較繁瑣了,此時(shí)可以通過創(chuàng)建一個(gè)網(wǎng)橋,需要通信的容器都綁定這個(gè)網(wǎng)橋即可。命令如下:

#創(chuàng)建網(wǎng)橋
docker network create -d bridge 網(wǎng)橋名稱
#綁定網(wǎng)橋
docker network connect 網(wǎng)橋名稱 容器名稱

Docker 數(shù)據(jù)卷

為避免容器中產(chǎn)生的數(shù)據(jù)丟失或者多個(gè)容器共享一份數(shù)據(jù),Docker 提供了2種數(shù)據(jù)掛載的方式:

  • 掛載到宿主機(jī):宿主機(jī)開辟空間,容器內(nèi)部文件存儲(chǔ)在宿主機(jī)上,并訪問同一份文件。命令如下:
    docker run --name 容器名稱 -v 宿主機(jī)目錄:容器目錄 鏡像名稱

  • 掛載到共享容器:新建一個(gè)容器專門提供其他容器來存儲(chǔ)或共享數(shù)據(jù),命令如下:

#創(chuàng)建共享容器
docker create --name 容器名稱 -v 宿主機(jī)目錄:容器目錄 鏡像名稱 /bin/true
#掛載到共享容器
docker run --name 容器名稱 --volumes-from  共享容器名稱  鏡像名稱

Dockerfile 構(gòu)建鏡像

當(dāng)需要自己創(chuàng)建一個(gè)鏡像時(shí)可以通過 Dockerfile 來構(gòu)建鏡像,然后上傳到鏡像倉(cāng)庫(kù)(可以自建 Harbor 或者使用公網(wǎng)的),需要使用的直接拉取下來即可。構(gòu)建命令如下

docker build -t 機(jī)構(gòu)/鏡像名:<tag> dockerfile目錄

docker 會(huì)基于 Dockerfile 文件中的指令來構(gòu)建,具體指令如下:

FROM 鏡像名  #基準(zhǔn)鏡像,基于該鏡像構(gòu)建
MAINTAINER xxxxx #用來描述的
WORKDIR 工作目錄 #進(jìn)入容后設(shè)置工作目錄,相當(dāng)于cd /xxx/
ADD ooo /xxx  #復(fù)制本地文件ooo到容器中的工作目錄 /xxx
ADD ooo.tar.gz /xxx # 復(fù)制并解壓 ooo.tar.gz 到容器中的工作目錄 /xxx
ENV XXX #設(shè)置環(huán)境常量,文件中可以以${XXX}方式進(jìn)行使用

運(yùn)行指令有 RUN、CMD、ENTRYPOINT,其區(qū)別為:

  • RUN:Build 構(gòu)建容器時(shí)執(zhí)行
  • CMD:容器啟動(dòng)時(shí)執(zhí)行的默認(rèn)命令和參數(shù),如果容器啟動(dòng)時(shí)有其他命令,則CMD不生效
  • ENTRYPOINT:容器啟動(dòng)時(shí)執(zhí)行的命令,只有最后一個(gè)ENTRYPOINT執(zhí)行

運(yùn)行指令有兩種聲明方式:

  • Shell腳本方式RUN yum install xxx
  • Exec函數(shù)方式(推薦此方式): ["yum","install","xxx"]

兩者的區(qū)別在于一個(gè)會(huì)創(chuàng)建子進(jìn)程執(zhí)行,一個(gè)會(huì)用新的進(jìn)程替換主進(jìn)程執(zhí)行。

Docker Compose 容器編排

在多個(gè)容器存在依賴,比如運(yùn)行應(yīng)用的容器依賴數(shù)據(jù)庫(kù)、Redis等多個(gè)容器都需要部署的情況下,為了減少部署時(shí)間,可以通過 Docker Compose 將這個(gè)應(yīng)用及其依賴的容器統(tǒng)一定義,達(dá)到一鍵部署效果,這個(gè)我們叫做容器編排。

在進(jìn)行容器編排時(shí)需要聲明 docker-compose.yml 文件定義各個(gè)容器以及依賴關(guān)系,然后執(zhí)行 docker-compose up -d 命令進(jìn)行容器啟動(dòng)。下面提供一個(gè) docker-compose.yml 示例:

version: '1.0'
services:
  service1: # 容器名、可通過此進(jìn)行通信
    build: service1 dockerfile目錄
    restart: always # 容錯(cuò)機(jī)制,當(dāng)容器宕機(jī)后自動(dòng)重啟
    environment: # 啟動(dòng)容器時(shí)添加環(huán)境變量
      環(huán)境變量: xxxx 
  service1:
    build: service2 dockerfile目錄
    depends_on: # 依賴某個(gè)容器,并可進(jìn)行通信
      - service1
    ports: # 端口映射
      - '宿主機(jī)端口:容器端口'
    restart: always # 容錯(cuò)機(jī)制,當(dāng)容器宕機(jī)后自動(dòng)重啟

需要注意的是 Docker Compose只能單機(jī),能力有限。集群或者其他復(fù)雜場(chǎng)景k8s可以更好的滿足。

以上就是一文帶你快速了解和使用Docker的詳細(xì)內(nèi)容,更多關(guān)于了解和使用Docker的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用Docker-compose安裝redis的簡(jiǎn)單步驟

    利用Docker-compose安裝redis的簡(jiǎn)單步驟

    Docker-compose是Docker官方推出的一個(gè)工具軟件,可以管理多個(gè)Docker容器組成的一個(gè)應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于利用Docker-compose安裝redis的簡(jiǎn)單步驟,需要的朋友可以參考下
    2024-03-03
  • Docker中Redis數(shù)據(jù)遷移到本地的實(shí)現(xiàn)

    Docker中Redis數(shù)據(jù)遷移到本地的實(shí)現(xiàn)

    Redis數(shù)據(jù)庫(kù)之間的遷移是指將數(shù)據(jù)從一個(gè)Redis實(shí)例復(fù)制到另一個(gè)Redis實(shí)例的過程,本文主要介紹了Docker中Redis數(shù)據(jù)遷移到本地的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • 阿里云docker容器固定應(yīng)用到到某一個(gè)節(jié)點(diǎn)記錄

    阿里云docker容器固定應(yīng)用到到某一個(gè)節(jié)點(diǎn)記錄

    這篇文章主要介紹了阿里云docker容器固定應(yīng)用到到某一個(gè)節(jié)點(diǎn)記錄,需要的朋友可以參考下
    2018-05-05
  • .Net8項(xiàng)目使用docker、docker-compose部署的圖文步驟

    .Net8項(xiàng)目使用docker、docker-compose部署的圖文步驟

    本文主要介紹了.Net8項(xiàng)目使用docker、docker-compose部署的圖文步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • docker可視化管理工具portainer忘記密碼重置教程的實(shí)現(xiàn)

    docker可視化管理工具portainer忘記密碼重置教程的實(shí)現(xiàn)

    本文主要介紹了docker可視化管理工具portainer忘記密碼重置教程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Docker自定義網(wǎng)絡(luò)詳解

    Docker自定義網(wǎng)絡(luò)詳解

    本文主要跟大家講解了Docker中的自定義網(wǎng)絡(luò)的相關(guān)知識(shí),包含網(wǎng)關(guān)、子網(wǎng)地址等等,非常的詳實(shí),有需要的小伙伴可以參考下
    2022-11-11
  • Docker連接mongodb實(shí)現(xiàn)過程及代碼案例

    Docker連接mongodb實(shí)現(xiàn)過程及代碼案例

    這篇文章主要介紹了Docker連接mongodb實(shí)現(xiàn)過程及代碼案例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • docker容器中布置靜態(tài)網(wǎng)站的實(shí)現(xiàn)

    docker容器中布置靜態(tài)網(wǎng)站的實(shí)現(xiàn)

    這篇文章主要介紹了docker容器中布置靜態(tài)網(wǎng)站的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Docker容器固定IP分配詳解

    Docker容器固定IP分配詳解

    本文介紹在centos7 docker環(huán)境下使用pipework腳本對(duì)容器分配固定IP。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Docker images導(dǎo)出和導(dǎo)入操作

    Docker images導(dǎo)出和導(dǎo)入操作

    這篇文章主要介紹了Docker images導(dǎo)出和導(dǎo)入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評(píng)論