主頁 > 軟體設計 > docker基本使用總結

docker基本使用總結

2021-11-03 08:00:07 軟體設計

1.安裝docker

docker 官網地址 Docker run reference | Docker Documentation

1.1離線安裝

下載離線包,網址:Index of linux/centos/8/x86_64/stable/Packages/

離線安裝docker需要下載3個包,containerd.io ,docker-ce-cli,docker-ce 和libcgroup-0.41-19.el8.x86_64.rpm

1.1.1首先安裝containerd.io,由于container-io需要秘鑰,所以需要使用yum安裝方式

注:所有的安裝都是有順序的,順序亂了,無法安裝注意是centos的還是ubuntu,ubuntu的deb請使用 sudu dpkg -i 安裝包的方式安裝

# yum localinstall containerd.io-1.2.6-3.3.fc30.x86_64.rpm

1.1.2安裝Docker-Ce的依賴

# rpm -ivh libcgroup-0.41-19.el8.x86_64.rpm

1.1.3安裝Docker客戶端

# rpm -ivh docker-ce-cli-19.03.13-3.el8.x86_64.rpm

1.1.4安裝Docker ce

# rpm -ivh docker-ce-19.03.13-3.el8.x86_64.rpm

1.2線上安裝

1.2.1為本地yum提供遠程repo資訊

# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

1.2.2安裝依賴

# yum install -y https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm

1.2.3安裝docker-ce

# yum install -y docker-ce

1.2.4啟動命令

# systemctl start docker

1.2.5查看狀態

# docker info

2.docker 基本命令

使用docker的命令很多,這里就梳理幾個常用的命令,用的時候可是使用 --help 查看可以攜帶的引數

1 啟動docker

# systemctl start docker | service start docker

2 查看docker狀態

# systemctl status docker | service status docker

3 查看docker服務狀態

# docker info

4 停止

# docker systemctl stop docker | service stop docker

5 搜索服務

# docker search 鏡像名

6 下載鏡像

# docker pull 鏡像名:版本 //可以去docker hup 中查看版本 latest 表示最新版

7 查看本地鏡像

# docker images //列出本地有的鏡像

8 洗掉鏡像

# docker rmi 鏡像名:版本號 | IMAGE_ID

9 根據鏡像創建容器(不推薦使用)

# docker create --name nginx -p 80:80 nginx

docker create --name 自定義容器名 -p 映射到宿主機的埠:容器內埠 鏡像名

具體細節,請參考官網檔案

10 查看正在運行的容器

# docker container ls

# docker ps // docker ps -a 查看所有容器

11 啟動 容器

# docker start 容器名

12 停止容器

# docekr stop 容器名

13 強殺容器

# docker kill 容器名

14 創建并運行容器(推薦使用)

# docker run -d --name nginx -p 80:80 nginx

// docker run -d --name 自定義容器名 -p 映射到宿主機的埠:容器內埠 鏡像名

攜帶引數較多,具體細節,請參考官網檔案

15 進入容器內部

# docker exec -it 容器名 /bin/bash

16 查找容器

# whereis mysql

17 退出容器

# exit

18 查看日志

# docker logs -f 容器名

19 查看容器中的行程

# docker top 容器名

20 查看容器內部資訊

# docker inspect 容器名

21 把容器內部資訊復制到本地

# docker cp nginx:/etc/nginx /data/

// docker cp 容器名:復制的檔案 復制到本地的路徑

22 暫停容器

# docker pause 容器名

23 暫停后恢復容器

# docker unpause 容器名

24 洗掉容器

# docker rm 容器名

25 查看docker占用的磁盤情況

# docker system df

26 洗掉未使用的鏡像和容器釋放磁盤空間

# docker system prune -a

27 洗掉資料卷檔案并釋放磁盤空間

# docker volume rm $(docker volume ls -qf dangling=true)

28 保存鏡像到本地

# docker save -o nginx.war nginx

29 將檔案匯入到docker

# docker load -i nginx.war

30 標記本地鏡像

# docker tag nginx test/nginx9

31 清理鏡像

# docker image prune

32 將日志檔案清空

# truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log

3.docker資料卷

   資料卷 (Data Volumes) 是一個可供一個或多個容器使用的特殊目錄,它將主機作業系統目錄直接映射進容器,
注意事項:
   掛載資料卷,最好是通過 run 而非 create/start 創建啟動容器, create/start 命令創建啟動容器后,再掛載資料卷相當麻煩,要修改很多組態檔,但并非不可以,
docker 官網推薦盡量進行目錄掛載,不要進行檔案掛載
有三種資料卷型別:
1. 宿主機資料卷:直接在宿主機的檔案系統中但是容器可以訪問( bind mount
2. 命名的資料卷:磁盤上 Docker 管理的資料卷,但是這個卷有個名字,
3. 匿名資料卷:磁盤上 Docker 管理的資料卷,因為沒有名字想要找到不容易, Docker 來管理這些檔案,
資料卷其實都在(如果沒有網路檔案系統等情況下)宿主機檔案系統里面的,只是第一種是在宿主機內的特定目錄下,而后兩種則在docker 管理的目錄下,這個目錄一般是 /var/lib/docker/volumes/
推薦大家使用 宿主機資料卷 方式持久化資料

3.1宿主機資料卷

宿主機資料卷其實就是將宿主機中的目錄和容器中的目錄進行掛載,
例:docker run --name nginx -itd -p 80:80 -v /data/nginx/:/etc/nginx nginx

其中/data/nginx 就是我們掛載的目錄這樣就可以保證容器內中/etc/nginx和宿主機中的目錄檔案保持一致,即使容器銷毀,宿主機中的目錄也是存在的,

3.2命名資料卷

例:docker run -itd --name nginx -p 80:80 -v nginx-volume:/etc/nginx nginx //nginx-volume為自定義的資料卷名稱

查看資料卷

# docker volume ls

查看資料卷在宿主機中的目錄

# docker volume inspect nginx-volume

/var/lib/docker/volumes/nginx-volume/_data就是宿主機中掛載的目錄了,

3.3匿名資料卷

創建容器并使用匿名資料卷掛載

# docker run --name nginx -itd -p 80:80 -v /etc/nginx nginx

查看資料卷,發現資料卷中多了一個新的資料卷

# docker volume ls

查看資料卷詳細資訊

# docker volume inspect 0829c4a2b44d2d17c9e85e3a96213401cd9fa8fccfa98315ab6385cfe836ea69

4.docker網路

docker 安裝后會自動創建三種網路,bridge ,host,none

查看網路

# docker network ls

4.1bridge模式

默認的網路模式,bridge 模式下容器沒有一個公有 ip, 只有宿主機可以直接訪問 , 外部主機是不可見的 , 但容器通過宿主機的NAT 規則后可以訪問外網,
bridge網路的表現形式是docker0這個網路介面,默認通過docker0這個介面進行通信,
可以使用命令 ip a查看多了一個docker0的網路介面

查看bridge網路的詳細資訊

# docker network inspect bridge

新建bridge網路

# docker network create -d bridge test-bridge

可以在創建容器時指定使用的網路
例:  docker run --name nginx -itd --network test-bridge -p 80:80 nginx

4.2host模式

相當于 Vmware 中的 NAT 模式,與宿主機在同一個網路中,但沒有獨立 IP 地址,

4.3none模式

容器并不進行任何網路配置

5.docker-compose

安裝docker-compose

官網地址Compose file | Docker Documentation

下載

https://github.com/docker/compose
下載最新版本: 1.27.4
mv /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
cp /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod + x /usr/local/bin/docker-compose
開發環境可以授予最高權限
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
docker-compose --version
docker-compose version
卸載只需要洗掉二進制檔案就可以了
docker-compose 主要是撰寫yaml檔案
yaml檔案主要包含4個一級key:version、service 、network 、volumes
version 是必須檔案的第一行,它定義了Compose檔案合適(主要是版本)
service 用于定義不同的應用服務
network 用于指引Docker創建新的網路,默認情況下,會創建bridge網路
volumes用于指引Docker來創建新的卷
這里是一個nginx的測驗用例可以用來參考,具體yaml的指令請到官網查閱
version: '3' 
services:
 test-nginx:
   restart: always
   container_name: test-nginx
   volumes:
     - /data/nginx:/etc/nginx/
   image: nginx:1.19.3-alpine
   ports:
     - 80:80

啟動服務

docker-compose up -d
停止服務
docker-compose down
列出所有運行容器
docker-compose ps
查看服務日志
docker-compose logs
構建或者重新構建服務
docker-compose build
啟動服務
docker-compose start
停止已運行的服務
docker-compose stop
重啟服務
docker-compose restart
官網地址: https://docs.docker.com/compose/reference/build/

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/345696.html

標籤:其他

上一篇:如何使用x86BIOS呼叫移動游標?

下一篇:Nginx快取機制和性能優化

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more