Linux(Centos7)安裝、使用 Docker

来源:https://www.cnblogs.com/l-y-h/archive/2020/04/02/12622730.html
-Advertisement-
Play Games

一、Linux(CentOS7) 上安裝 docker 1、docker 是什麼? docker 是一種 虛擬化容器技術,一個開源的應用容器引擎。 基於鏡像,可以秒級啟動各種容器(運行一次鏡像就生成一個容器,類似於 Java 中 類與對象)。 各容器間相互隔離,且每個容器均是一個完整的運行環境。 可 ...


一、Linux(CentOS7) 上安裝 docker

1、docker 是什麼?

  docker 是一種 虛擬化容器技術,一個開源的應用容器引擎。
  基於鏡像,可以秒級啟動各種容器(運行一次鏡像就生成一個容器,類似於 Java 中 類與對象)。
  各容器間相互隔離,且每個容器均是一個完整的運行環境。
  可以很方便的讓開發者打包應用以及相關依賴包到一個可移植的輕量級的容器中,併發布到 Linux 上。
參考地址:
  https://www.cnblogs.com/l-y-h/p/11337051.html
  https://docs.docker.com/
  https://www.runoob.com/docker/docker-tutorial.html

 

2、安裝

(1)官方文檔地址:
  https://docs.docker.com/

(2)找到官方文檔位置,根據文檔一步步執行即可。
  Step1:進入官網,選擇 Get Docker,並選擇 Docker for Linux。

 

 

 

Step2:選擇 相應的 Linux 系統,此處我選擇 CentOS.

 

 

 

(3)安裝流程
  Step1:卸載舊版本。
    查看當前系統是否有 docker 舊版本存在,存在則刪除舊版本。

【方式一:(先查找是否存在,再刪除)】
    rpm -qa | grep docker
    
【方式二:(直接刪除,不管是不是存在,root 用戶不需要輸入 sudo)】
    sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

 

 

 

  Step2:安裝 Docker 倉庫。
  使用 Docker 倉庫進行安裝,用來簡化安裝、升級等操作。也可採用 RPM 方式手動安裝。
  所需軟體包:
    yum-config-manager 需要 yum-util。
    device mapper 存儲驅動程式 需要 device-mapper-persistent-data、 lvm2。

【安裝所需軟體包:(yum-utils、device-mapper-persistent-data、lvm2)】
    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
      
【設置穩定的倉庫(用於下載 docker):】
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo

 

 

 

  Step3:安裝社區版的 Docker(Docker Engine-Community)
    安裝最新版本的 Docker Engine-Community 和 containerd.

【安裝最新的 Docker:】
    sudo yum install docker-ce docker-ce-cli containerd.io
    
【查看當前版本,若有版本數據,則安裝成功】
    docker -v

 

 

 

  Step4:啟動 docker,並檢查是否成功啟動。

【啟動、關閉 docker:(方式一)】
    sudo systemctl start docker
    sudo systemctl stop docker
    
【啟動、關閉 docker:(方式二)】
    sudo service docker start
    sudo service docker stop
    
【檢查是否啟動成功:(方式一,查看本地鏡像)】
    sudo docker images
    
【檢查是否啟動成功:(方式二,運行 hello-world 鏡像)】
    sudo docker run hello-world

 

 

 

  Step5:設置開機自啟動。
    每次開機都得重新輸入命令用於啟動 docker,很麻煩,所以一般設置開機自啟動。

【查看是否開機自啟動:】
    systemctl list-unit-files | grep enable
    或者
    systemctl list-unit-files | grep docker

【開機自啟動:】
    sudo systemctl enable docker    

 

 

 

(4)配置鏡像加速(此處使用 阿裡雲鏡像)
    預設下載地址比較慢(dockerhub),使用鏡像加速可以提高軟體下載速度。
  Step1:登陸 阿裡雲官網,然後點擊 控制台。

 

 

 

  Step2:進入控制台,點擊列表框,選擇產品服務中的 容器鏡像服務。

 

 

 

  Step3:進入 容器鏡像服務後,選擇鏡像加速器,按照步驟操作即可。

 

 

 

  Step4:配置鏡像加速器。

【加速器地址:】
    https://y5krm9wr.mirror.aliyuncs.com

【修改配置文件:】
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://y5krm9wr.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

 

 

 

二、常用命令 -- 鏡像倉庫管理相關命令

  用於從 遠程鏡像倉庫下載鏡像到本地。

1、docker pull(從鏡像倉庫中拉取指定的鏡像)

【格式:】
    docker pull [選項] 鏡像名[:版本號]
選項:
    -a      拉取所有鏡像
註:
    :版本號 可以不存在,不存在時,獲取最新的鏡像。

【舉例:】
    docker pull mysql:8.0.19

 

 

 

2、docker search(從 Dcoker Hub 中查找鏡像)

【格式:】
    docker search [選項] 鏡像名
選項:
    -s 指定數       顯示 stars 不小於 指定數的鏡像。

【舉例:】
    docker search -s 20 mysql

 

 

 

三、常用命令 -- 本地鏡像管理命令

  用於管理本地的鏡像。

1、docker images(列出本地鏡像列表)

【格式:】
    docker images [選項] [鏡像名]
選項:
    -a          列出所有鏡像
    -q          只顯示鏡像 ID(IMAGE ID)
    --no-trunc  顯示完整的鏡像信息
    --digests   顯示鏡像摘要信息

【舉例:】 
    [root@localhost ~]# docker images mysql
    [root@localhost ~]# docker images --no-trunc

 

 

 

2、docker rmi(刪除鏡像)

【格式:】
    docker rmi [選項] 鏡像名
選項:
    -f    強制刪除
    
【舉例:】
    docker rmi tomcat

 

 

 

3、docker tag(標記本地鏡像,將其歸入某個倉庫)

  相當於一個鏡像的不同名字。

【格式:】
    docker tag 原鏡像名 新鏡像名
    
【舉例:】
    [root@localhost ~]# docker tag tomcat:latest mytomcat 

 

 

 

四、常用命令 -- 管理容器的生命周期命令

  運行一個鏡像,就可以生成一個 容器,容器內部是一個完整的運行環境。
  一個鏡像可以生成多個容器,類似於 Java 中 類 與 對象的關係。
  需要對各個容器進行管理。

1、docker run(創建一個容器並運行)

【格式:】
    docker run [選項] 鏡像文件名
選項:
    -d              指在後臺運行容器,返回容器 ID。
    -i              以交互模式運行容器,通常與 -t 連用(即 -it)。
    -t              為容器分配一個偽輸入終端。
    -P              隨機埠映射,將容器內部埠隨機映射到主機的埠
    -p              指定埠映射,將容器內部埠映射到主機指定埠,格式:-p 主機埠:容器埠
    --name          指定啟動容器的名字,格式: --name 容器名
    -e             指定環境變數,格式:-e 環境變數名=環境變數值
    -v             文件掛載,將容器內部文件與主機文件綁定,格式 -v 主機文件路徑:容器文件路徑
    
【舉例:】
    docker run --name mysqlDemo -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0.19
上面命令為:
    docker run mysql:8.0.19            執行 mysql:8.0.19 版本的鏡像,生成一個容器
    --name mysqlDemo                   容器命名為 mysqlDemo
    -d                                 後臺運行
    -e MYSQL_ROOT_PASSWORD=123456      設置登陸密碼為 123456,登陸用戶為 root
    -p 3306:3306                       將容器內部 3306 埠映射到 主機的 3306 埠,即通過 主機的 3306 可以訪問容器的 3306

 

 

 

2、docker start/stop/restart(啟動、關閉、重啟容器)

【docker start 格式:】
    docker start 容器名
    
【docker stop 格式:】
    docker stop 容器名
    
【docker restart 格式:】
    docker restart 容器名
    
【舉例:】
    [root@localhost ~]# docker stop mysql

 

 

 

3、docker kill(殺掉一個正在運行的容器)

【格式:】
    docker kill [選項] 容器名
選項:
    -s     向容器發送一個信號

【舉例:】
    [root@localhost ~]# docker kill mysqlDemo

 

 

 

4、docker rm(刪除容器)

【格式:】
    docker rm [選項] 容器名
選項:  
    -f          強制刪除一個運行中的容器
    -v          刪除與容器相關聯的 捲
    
【舉例:】
     [root@localhost ~]# docker rm -f mysqlDemo 

 

 

 

5、docker create(創建一個容器,但不啟動容器)

【格式:】
    docker create [選項] 鏡像名
選項基本與 docker run 一樣(沒有 -d)。

【舉例:】
    [root@localhost ~]# docker create --name mysqlDemo1  -e MYSQL_ROOT_PASSWORD=123456 -p 3312:3306 mysql:8.0.19

 

 

 

6、docker exec(在運行的容器中執行命令)

【格式:】
    docker exec [選項] 容器名 命令
選項:
    -d              以分離模式在後臺運行。
    -i              以交互模式運行容器,通常與 -t 連用(即 -it)。
    -t              為容器分配一個偽輸入終端。

【舉例:】
    [root@localhost ~]# docker exec -it mysql /bin/bash

 

 

 

五、常用命令 -- 查看容器信息命令

1、docker ps(查看當前容器列表)

【格式:】
    docker ps [選項]
選項:
    -a           顯示所有容器,包括未運行的容器
    -l           顯示最近創建的容器
    -n 指定數     顯示最近創建的 指定數 的容器。比如: -n 7,顯示最近創建的 7 個容器
    -q           只顯示容器 ID
    
【舉例:】
    [root@localhost ~]# docker ps -an 10

 

 

 

2、docker top(查看容器中運行的進程信息)

【格式:】
    docker top 容器名

【舉例:】
    [root@localhost ~]# docker top mysql

 

 

 

3、docker logs(獲取容器的日誌)

【格式:】
    docker logs [選項] 容器名
選項:
    -f          跟蹤日誌輸出
    --tail      顯示最新的 n 條日誌,格式: --tail=指定數
    -t          顯示時間戳

【舉例:】
    [root@localhost ~]# docker logs --tail=10 mysql

 

 

 

4、docker port(查看映射埠)

【格式:】
    docker port 容器名
    
【舉例:】
    docker port mysql

 

 

 

5、docker info(顯示 docker 系統信息)

【格式:】
    docker info

【舉例:】
    [root@localhost ~]# docker info

 

 

 

6、docker version、docker -v(顯示 docker 版本信息)

【格式:】
    docker version
    docker -v

【舉例:】
    [root@localhost ~]# docker version
    [root@localhost ~]# docker -v

 

 

 

六、Docker 上安裝 mysql 8.0.19 鏡像

1、查找 想要安裝的 mysql 版本

【方式一:官網搜索】
    https://hub.docker.com/
    https://hub.docker.com/_/mysql?tab=tags
    
【方式二:(通過命令行查詢)】
    docker search mysql

 

 

 

 

 

 

2、下載鏡像

  通過官網地址,可以查看到 想要下載的版本,使用 pull 命令拉取鏡像即可.
  此處我選擇 8.0.19 版本的 mysql。
  如果沒有 設置版本,則會自動下載最新的版本(即 docker pull mysql 會下載最新的版本 latest)。

【命令行下載:】
    docker pull mysql:8.0.19
    
【查看鏡像是否成功下載:(即查看本地鏡像)】
    docker images

 

 

 

3、運行容器

【運行容器:】
    docker run -p 3306:3306 --name mysql \
    -v /usr/mydata/mysql/log:/var/log/mysql \
    -v /usr/mydata/mysql/data:/var/lib/mysql \
    -v /usr/mydata/mysql/conf:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:8.0.19
    
分析:
    docker run -d mysql:8.0.19             以後臺的方式運行 mysql 8.0.19 版本的鏡像,生成一個容器。
    --name mysql                           容器名為 mysql
    -e MYSQL_ROOT_PASSWORD=123456          設置登陸密碼為 123456,登陸用戶為 root
    -p 3306:3306                           將容器內部 3306 埠映射到 主機的 3306 埠,即通過 主機的 3306 可以訪問容器的 3306-v /usr/mydata/mysql/log:/var/log/mysql    將容器的 日誌文件夾 掛載到 主機的相應位置
    -v /usr/mydata/mysql/data:/var/lib/mysql   將容器的 數據文件夾 掛載到 主機的相應位置
    -v /usr/mydata/mysql/conf:/etc/mysql/conf.d   將容器的 自定義配置文件夾 掛載到主機的相應位置
    
【查看容器是否啟動:】
    docker ps -a

 

 

 

 

 

 

4、使用

【本機使用:(使用互動式方式進入)】
    docker exec -it mysql /bin/bash
    
【外部訪問:(訪問主機的 3306 埠即可)】
    ifconfig 可以查看 主機的 ip 地址(比如連接 :192.168.217.129:3306

 

 

 

 

 

 

5、修改配置文件(比如修改預設字元集)

  在啟動過程中,已經將 /etc/mysql/conf.d 掛載到了 /usr/mydata/mysql/conf 上,所以在 /usr/mydata/mysql/conf 目錄下 新建一個 my.cnf 文件,並添加配置信息,即可修改 mysql 容器的配置。

【查看 當前 mysql 的字元集:】
    show variables like "%character%";

初始字元集。

 

 

創建 /mydata/mysql/conf/my.cnf ,並重啟容器。

 

 

【在 /mydata/mysql/conf 下新建一個 my.cnf 文件】
    [client]
    # 設置字元集為 utf-8
    default-character-set=utf8
    
    [mysql]
    # 設置字元集為 utf-8
    default-character-set=utf8
    
    [mysqld]
    # 設置登陸用戶
    # user=root
    # 設置字元集編碼為 utf-8
    character-set-server=utf8

【重啟容器】
    docker restart mysql

 

 

 

七、Docker 安裝 Redis

1、查找需要安裝的鏡像

【方式一:官網搜索】
    https://hub.docker.com/
    https://hub.docker.com/_/redis?tab=tags
    
【方式二:(通過命令行查詢)】
    docker search redis

 

 

 

2、下載鏡像

【下載最新的鏡像:】
    docker pull redis

 

 

 

3、運行容器

【運行容器:】
使用 docker run -v 掛載文件時,若想掛載文件,需要先在主機上創建文件,否則會當成目錄掛載。
    mkdir -p /usr/mydata/redis/conf
    touch /usr/mydata/redis/conf/redis.conf

需要使用 redis-server /etc/redis/redis.conf 指定配置文件啟動 redis。
    docker run -p 6379:6379 --name redis \
     -v /usr/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
     -v /usr/mydata/redis/conf/data:/data \
     -d redis redis-server /etc/redis/redis.conf 
     
分析:
    docker run -d redis   運行 redis 最新鏡像,並生成一個容器
    --name redis          容器名為 redis
    -p 6379:6379          指定埠映射,容器的 6379 埠映射到 主機的 6379 埠,
    -v /usr/mydata/redis/conf/redis.conf:/etc/redis/redis.conf   掛載 redis 的配置文件到主機的指定位置
    -v /usr/mydata/redis/conf/data:/data   掛載 redis 的數據到主機的指定位置
    redis-server /etc/redis/redis.conf    表示根據 /etc/redis/redis.conf 配置文件啟動。

 

 

 

4、使用

【使用互動式方式進入 redis 容器】
    docker exec -it redis /bin/bash
    
【使用互動式方式 打開 redis-cli】
    docker exec -it redis redis-cli

 

 

 

5、修改配置文件(比如數據持久化)

  使用預設配置文件啟動 redis 時,數據不會持久化(即 appendonly = no)。
  當 redis 重啟後,數據就會丟失。

 

 

修改配置文件,添加數據持久化(即 appendonly = yes)。

【編輯 /usr/mydata/redis/conf/redis.conf】
    vim /usr/mydata/redis/conf/redis.conf

    appendonly yes

 


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

-Advertisement-
Play Games
更多相關文章
  • 三、C#數據類型 3.1.變數 聲明->賦值->使用 作用域:變數作用域為包含它的大括弧內 3.2.常量 1)const 數據類型 常量名稱 = 常量值 聲明常量時一定要賦值 2)@作用 輸出轉義字元 @"Hello World\n" 讓字元串換行 關鍵字用作標識符 @namespace @clas ...
  • 傳遞數據至部分視圖: 在ps.cshtml中get到上面高亮的參數: ...
  • VS2013如何轉成VS2010且不會出現此項目與Visual Studio的當前版本不相容的報錯 解決方法: 1.用記事本打開解決方案文件“解決方案名.sln”,然後修改最上面兩行為如下代碼:Microsoft Visual Studio Solution File, Format Version ...
  • [toc] 1.背景 接上篇文章 "深入淺出C 結構體——封裝乙太網心跳包的結構為例" ,使用結構體性能不佳,而且也說明瞭原因。本篇文章詳細描述了以類來封裝網路心跳包的優缺點,結果大大提升瞭解析性能。 2.用類來封裝乙太網心跳包的優缺點 2.1.優點 + 可以在類里直接new byte[],即直接實 ...
  • 前言: gRPC預設是ProtoFirst的,即先寫 proto文件,再生成代碼,需要人工維護proto,生成的代碼也不友好,所以出現了gRPC CodeFirst,下麵來說說我們是怎麼實現gRPC CodeFirst 目錄: 實現和WCF一樣的CodeFirst (1). 實現gRPC CodeF ...
  • 本文將介紹如何在.NET Core3環境下使用MVVM框架Prism的使用區域管理器對於View的管理 一.區域管理器 我們在之前的Prism系列構建了一個標準式Prism項目,這篇文章將會講解之前項目中用到的利用區域管理器更好的對我們的View進行管理,同樣的我們來看看官方給出的模型圖: 現在我們 ...
  • 前言 By 魯迅 By 高爾基 1. 概述 Linux系統在訪問設備的時候,存在以下幾種IO模型: 1. ; 2. ; 3. ; 4. ; 5. ; 今天我們來分析下IO多路復用機制,在Linux中是通過 機制來實現的。 先看一下阻塞IO模型與非阻塞IO模型的特點: 阻塞IO模型:在IO訪問的時候, ...
  • 使用方法: 使用示例: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...