乾貨 | 一文搞定 Docker 容器技術與常用命令

2020-08-25 霍格沃茲軟體測試學院

Docker 簡介

Docker 是一個開源的應用容器引擎,基於 Go 語言開發,Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的系統。

Docker 是世界領先的軟體容器平臺,Docker 官方的口號是」調試你的應用,而不是調試環境「。在進行多人協作開發時,開發者可以使用 Docker 來消除所謂「我這裡運行是好的」(works on my machine)問題,運維人員使用 Docker 來並行的運行和管理應用來獲得更優計算密度,基於各自獨立的容器,不會因為環境原因導致應用運行錯誤。

如下圖所示,在工作當中,如果我們面對這樣多的服務、多個伺服器,以及多種環境,我們應該如何處理呢?如果還繼續用傳統的方式打包部署,我們會浪費多少時間?

所以在 Docker 橫空出世之前,應用打包一直是大部分研發團隊的痛點,在 Docker 出現後,它以更高效的利用系統資源、更高效的利用系統資源、一致的運行環境、持續交付和部署、更輕鬆的遷移、更輕鬆的維護和拓展,6大優點迅速火了起來。

Docker 的三個核心概念

  • 鏡像(Image)

是一個包含有文件系統的面向 Docker 引擎的只讀模板。任何應用程式運行都需要環境,而鏡像就是用來提供這種運行環境的。例如一個 Ubuntu 鏡像就是一個包含 Ubuntu 作業系統環境的模板。

  • 容器(Container)

類似於一個輕量級的沙盒,可以將其看作一個極簡的 Linux 系統環境(包括 root 權限、進程空間、用戶空間和網絡空間等),以及運行在其中的應用程式。Docker 引擎利用容器來運行、隔離各個應用。
容器是鏡像創建的應用實例,可以創建、啟動、停止、刪除容器,各個容器之間是是相互隔離的,互不影響。

注意:鏡像本身是只讀的,容器從鏡像啟動時,Docker 在鏡像的上層創建一個可寫層,鏡像本身不變。

  • 倉庫(Repository)

鏡像倉庫,是 Docker 用來集中存放鏡像文件的地方。

Docker 安裝

Docker 是開源的商業產品,有兩種版本:社區版(Community Edition,縮寫為 CE)和企業版(Enterprise Edition,縮寫為 EE)。企業版包含了一些收費服務,一般用不到。我們下面將會演示 Docker CE 版本的使用方法。

Docker 支持很多作業系統平臺,有大家常用的 Microsoft Windows 系列作業系統(Docker 不支持 Windows 10 家庭版系統),Linux 發行版和 MacOS 系統。

安裝

  • Windows 系統安裝方法

Windows 上有兩種安裝 Docker 方式:

第一種:訪問 Docker 網站下載 Docker Desktop 軟體的 exe 文件,下載地址:https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe

第二種:使用 Chocolatey 包管理工具安裝 Docker。(包管理工具需自行下載安裝)

choco install docker-for-windows


  • Linux 發行版 Ubuntu 系統安裝方法

1.切換到管理員權限

su root

2.安裝必要的一些系統工具

apt-get updateapt-get -y install apt-transport-https ca-certificates curl \software-properties-common

3.安裝 GPG 證書

curl -fsSL \http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \| sudo apt-key add -

4.寫入軟體源信息

add-apt-repository &34;

5.更新並安裝 Docker-CE

apt-get -y updateapt-get -y install docker-ce


  • Linux 發行版 CentOS 系統安裝方法

1.切換到管理員權限

su root

2.安裝必要的一些系統工具

yum install -y yum-utils device-mapper-persistent-data lvm2

3.添加軟體源信息

yum-config-manager --add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新並安裝 Docker-CE

yum makecache fastyum -y install docker-ce


  • macOS 作業系統安裝 Docker 方法

macOS 上有兩種安裝 Docker 方式:

第一種:訪問 Docker 網站下載 Docker Desktop 的 dmg 安裝包,下載地址:https://download.docker.com/mac/stable/Docker.dmg

第二種:使用包管理工具方式來安裝 Docker,使用 Homebrew 工具安裝 Docker。(包管理工具需自行下載安裝)

brew cask install docker

Docker 常用操作

  • 啟動 Docker

systemctl start docker


  • 重新啟動 Docker

systemctl retart docker


  • 開機時自動啟動 Docker

bash systemctl enable docker ¨G2G bash systemctl status docker

Docker 加速器配置

我們下載 Docker 鏡像的時候,默認會訪問 Docker 網站,而 Docker 網站是在國外部署的,距離比較遠下載速度特別慢。我們可以通過設置加速器的方式來加速 Docker 鏡像下載的速度。下面將描述一下使用加速器的步驟:

1.我們這裡選擇的是阿里雲提供的 Docker 鏡像加速器服務,首先訪問阿里雲的鏡像倉庫(如果沒有阿里雲帳號則需要註冊):

https://cr.console.aliyun.com/

2.選擇「鏡像加速器「

3.根據個人的系統平臺,選擇運行 Docker 的 OS,並按照操作文檔的要求修改 Docker 配置文件,然後重啟 Docker 服務即可完成加速器的配置。

Docker常用命令

Docker 的常用命令一般分為:鏡像管理、容器管理。

查看 Docker 版本

docker version

鏡像管理命令

下面使用 busybox 軟體作為示例,busybox 軟體是一個集成了非常多最常用的 Linux 命令和工具的軟體集合。

  • 查看所有鏡像

docker images

    • REPOSITORY:鏡像來自哪個倉庫
    • TAG:鏡像的標籤信息,版本之類的信息
    • IMAGE ID:鏡像創建時的id
    • CREATED:鏡像創建的時間
    • SIZE:鏡像文件大小
  • 下載軟體鏡像

docker pull busybox:latest

備註:latest 表示使用 busybox 軟體的最新版本,所以軟體默認下載都是 latest 版本。

  • 導出鏡像

docker save busybox > busybox.tar

備註:把 busybox 鏡像導出為 busybox.tar 文件,可以把 busybox.tar 文件複製到別的作業系統上使用,免除下載時網絡慢的問題。

  • 刪除鏡像

docker rmi busybox:latest

備註:鏡像一般都會根據版本打包,如果有下載一個軟體的多個版本就需要指定具體版本信息。如 busybox:1.26 就會刪除 busybox 軟體的 1.26 版本的鏡像,不會刪除latest 版本的鏡像。

  • 導入鏡像

docker load < busybox.tar

備註:使用導出命令導出的鏡像,可以通過此命令導入到沒有下載此軟體的作業系統,方便網絡條件差的情況使用。

  • 更改鏡像名

docker tag busybox:latest busybox:test

備註:busybox:latest原鏡像名,busybox:test要改成的鏡像名

容器管理命令

  • 運行容器

docker run -d --name=busybox busybox:latest ping 114.114.114.114

- `run`:run參數代表啟動容器- `-d`:以後臺daemon的方式運行- `--name`:指定一個容器的名字,此後操作都需要使用這個名字來定位容器。- `busybox:latest`:容器所使用的鏡像名字- `ping 114.114.114.114`:啟動容器執行的命令


  • 查看運行的容器

docker ps


  • 查看所有容器

docker ps -a

- `CONTAINER ID`:容器啟動的id- `IMAGE`:使用哪個鏡像啟動的容器- `COMMAND`:啟動容器的命令 - `CREATED`:創建容器的時間- `STATUS`:容器啟動時間- `PORTS`:容器映射到宿主機的埠- `NAMES`:容器啟動的名字


  • 啟動容器

docker start busybox


  • 重新啟動容器

docker restart busybox


  • 停止容器

docker stop busybox


  • 殺死容器

docker kill busybox


  • 刪除運行中的容器

docker rm -f busybox


  • 執行容器內命令

docker exec -it busybox ls

備註:-it 交互終端

  • 複製容器內文件

docker cp busybox:/etc/hosts hosts

  • 查看容器日誌

docker logs -f busybox

以上,更多進階內容後續進一步探討。

相關焦點

  • docker容器常用命令
    獲取鏡像 拉取指定版本的鏡像docker pull centos:6.9 查詢本機的所有鏡像,並顯示詳細信息docker images 查看鏡像的詳細信息(對外埠、容器啟動時執行的命令、環境變量、工作目錄等等)docker inspect ID/name:tag
  • Docker 最常用的鏡像命令和容器命令
    本文列出了 docker 使用過程中最常用的鏡像命令和容器命令,以及教大家如何操作容器數據卷,實現容器數據的備份。熟練練習這些命令以後,再來一些簡單的應用部署練習,大家就可以學習 Docker 的鏡像構建、備份恢復遷移、鏡像倉庫、網絡、集群等等更多的內容。
  • Docker中常用的鏡像命令和容器命令
    一、Docker鏡像命令1. 鏡像管理命令介紹docker image2.二、Docker容器命令1. 容器命令介紹docker container2.運行容器docker run <容器名>3. 查看容器列表docker ps -a4.
  • Docker Swarm常用命令
    docker技術現在越來越流行,接下來為大家介紹一些常用命令service lsdocker service ps nginxkill其中一個容器docker swarm 常用命令docker swarm init #初始化集群docker swarm join-token worker #查看工作節點的 tokendocker swarm join-token manager #查看管理節點的 tokendocker
  • 乾貨 | 一文搞定 Linux 常用高頻命令
    命令 mv移動一個文件夾(docker文件夾,移動到/root/file目錄)    mv ~/docker/ /root/file移動一個文件(docker.txt移動到/root/file目錄)    mv docker.txt
  • 操作 Docker 容器 | Docker 系列
    還有一種方式,使用 docker create 命令創建容器,然後使用 docker start 來啟動容器,兩條命令相當於 docker run 一條,這種方式不常用,就不做更多介紹了。下面聊聊 docker run 背後的故事,到底這一條命令背後,Docker 都為我們做了哪些操作呢?
  • docker常用命令詳解
    docker [build|images|rmi|tag|save|import|load] 容器資源管理 — docker [volume|network] 系統日誌信息 — docker [events|history|logs] 一、常用命令 1、顯示
  • Docker系列之docker-componse常用命令
    簡介上篇已經說過了Docker-componse的yaml文件的常用命令,本篇主要來說下docker-componse的常用命令。刪除指定服務的容器docker-compose rm eurekarun在一個服務上執行一個命令docker-compose run web bash這樣可以在啟動一個
  • docker鏡像及容器命令
    一、Docker鏡像命令1. 鏡像管理命令介紹docker image2.二、Docker容器命令1. 容器命令介紹docker container2. 運行容器docker run <容器名>3. 查看容器列表docker ps -a4.
  • 雲計算核心技術Docker教程:docker-compose 常用命令介紹
    然後,使用一個命令,就可以從 YML 文件配置中創建並啟動所有服務。在下載安裝Docker Compose後通過創建 Dockerfile 文件就可以使用Docker Compose命令構建和啟動應用了,本文主要介紹docker-compose的常用命令。1.重啟項目中的服務。
  • 開發者必備丨Docker客戶端常用命令分享
    學習Docker,首先需要了解Docker基本概念,我們在以前的文章中介紹過docker的基本原理和部署作業系統。今天講下嵌入式開發中docker客戶端常用的命令,開始進入「動手」階段(也就是敲Docker命令)。Docker命令較多,這裡筆者總結下常用的Docker命令,方便小夥伴們查閱。
  • IT工程師都需要掌握的容器技術之Docker容器管理
    上篇文章我們講解了docker的基本用法主要涉及到容器的安裝、容器倉庫鏡像的配置及容器鏡像的管理等。今天這篇文章我們主要了解一下Docker容器管理的一些基礎及其命令的使用方法。02容器創建上面章節介紹的docker run命令其實並不只是創建了容器,它在創建的容器的同時運行了容器。
  • Docker系列教程02-操作Docker容器
    1)導出容器將容器導出到一個文件中,可以使用docker export,命令格式如下:docker import 語法例如,使用docker import將導出的myubuntu.tar文件導入為鏡像,並且重新指定標籤為qinlulu/ubuntu:v1,代碼如下:還記得上一章節,我們講過docker
  • docker常用命令整理
    nginx查看運行中的容器docker ps瀏覽器訪問確認docker7、docker mysql7.1、docker search mysql 用 docker search mysql 命令來查看可用版本7.2、拉取 MySQL 鏡像 docker
  • 雲計算核心技術Docker教程:Docker容器使用
    >$ docker pull ubuntu以下命令使用 ubuntu 鏡像啟動一個容器,參數為以命令行模式進入該容器:$ docker run -it ubuntu /bin/bash -i: 交互式操作 。
  • 從docker容器內部/k8s容器執行宿主機的docker命令
    1) 把docker相關的命令和依賴使用-v掛載到容器docker run -it -d \--restart=always-u root \-v /usr/bin/docker:/usr/bin/docker \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 鏡像名稱以root的身份去運行鏡像(避免在容器中調用Docker命令沒有權限)將宿主機的
  • 初識 Docker,熟悉常用 Docker 命令
    一、安裝 DockerDocker 分為企業版和社區版,還有桌面版,可以在 Docker Hub 去下載合適的版本 桌面版就是一個應用,直接安裝就可以,很便捷,其它版本官方也有詳細的說明>運行docker run --name ichochy-nginx -d -p 80:80 nginxdocker run //在新容器(container)中運行命令 --name string
  • Docker常用命令就該這麼學!
    二、Docker容器的操作 2.1:運行容器:docker run 鏡像的標識 | 鏡像名稱 [:tag] (1)docker run -d -p 宿主機埠:容器埠 --name 容器名稱
  • 容器微服務和持續集成,(三)微服務docker容器部署
    繼前面兩篇,對Spring Cloud和容器的介紹後,大家應該了解了微服務的基礎。今天整理和介紹Spring Cloud的容器化部署。後面幾篇將介紹持續集成Gitlab和Jenkins,歡迎朋友們關注。
  • docker系列之Docker Compose的yaml文件常用命令
    簡介在前面提到的都是通過dockerfile構建鏡像,使用docker run、docker stop等命令操作容器。然後在正式環境中我們會有多個服務,如果一個個去執行docker命令,無非是浪費時間,也不理想。