Docker入門 及 常規命令

Docker 簡介

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
Docker 從 17.03 版本之後分爲 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),我們用社區版就可以了。

在這裏插入圖片描述
Docker官網:https://www.docker.com/

Docker的應用場景

  1. Web 應用的自動化打包和發佈。

  2. 自動化測試和持續集成、發佈。

  3. 在服務型環境中部署和調整數據庫或其他的後臺應用。

  4. 從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的 PaaS 環境。

Docker 的優點

  1. 簡化程序:
    Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,便可以實現虛擬化。Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數週的 任務,在Docker容器的處理下,只需要數秒就能完成。

  2. 避免選擇恐懼症:
    如果你有選擇恐懼症,還是資深患者。那麼你可以使用 Docker 打包你的糾結!比如 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,所以 Docker 可以簡化部署多種應用實例工作。比如 Web 應用、後臺應用、數據庫應用、大數據應用比如 Hadoop 集羣、消息隊列等等都可以打包成一個鏡像部署。

  3. 節省開支:
    一方面,雲計算時代到來,使開發者不必爲了追求效果而配置高額的硬件,Docker 改變了高性能必然高價格的思維定勢。Docker 與雲的結合,讓雲空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。

Docker的架構
Docker 鏡像(Images) 是用於創Docker 鏡像建 Docker 容器的模板。
Docker 容器(Container) 容器是獨立運行的一個或一組應用。
Docker 客戶端(Client) Docker 客戶端通過命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 與 Docker 的守護進程通信。

Docker 主機(Host) 一個者物理或虛擬的機器用於執行 Docker 守護進程和容器。
Docker 倉庫(Registry) Docker 倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。
Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。

Centos7安裝Docker

1、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本
$ uname -r

2、使用 root 權限登錄 Centos。確保 yum 包更新到最新。
$ yum update

3、卸載舊版本(如果安裝過舊版本的話)
$ yum remove docker docker-common docker-selinux docker-engine

4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
$ yum install -y yum-utils device-mapper-persistent-data lvm2

5、設置yum源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6,安裝最新版本的Docker
$ yum install docker-ce docker-ce-cli containerd.io

7,啓動Docker並設置開機啓動
$ systemctl start docker
$ systemctl enable docker

8,驗證Docker
$ docker version
在這裏插入圖片描述
說明安裝OK;

配置阿里雲

默認的遠程倉庫 https://hub.docker.com/下載網速很慢,所以我們配置下阿里雲的鏡像倉庫
1、我們先登錄阿里雲的服務地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
2、找到我們需要配置的地址

在這裏插入圖片描述
3、然後我們執行命令:cd /etc/docker/ 進入文件夾,然後輸入:ll 找到daemon.json文件,沒有的話就新建:vi daemon.json,就會進入下圖,我們只需要把上圖紅框裏面的地址copy到裏面,然後按Esc,然後輸入命令 :wq(:是命令的一部分),就更改完成了
在這裏插入圖片描述

4、重啓daemon
systemctl daemon-reload

5、重啓docker服務
systemctl restart docker

我們就能下載東西了,並且速度會快很多

然後運行 docker run hello-world,首先本地倉庫未能找到該鏡像,然後去遠程倉庫尋找以及下載該鏡像,所以我們再執行這個命令時就能看到hello world了

在這裏插入圖片描述

Docker 命令

Docker基本命令

啓動Docker
systemctl start docker

停止Docker
systemctl stop docker

重啓Docker
systemctl restart docker

開機啓動Docker
systemctl enable docker

查看Docker概要信息
docker info

查看Docker幫助文檔
docker --help

查看Docker版本信息
docker version

Docker鏡像常用命令
下載鏡像官網:https://hub.docker.com/
在這裏插入圖片描述

  1. docker images 列出本機所有鏡像
    docker images
    列出本機所有鏡像
    在這裏插入圖片描述
    在這裏插入圖片描述

  2. docker search 搜索鏡像
    和 https://hub.docker.com/ 這裏的搜索效果一樣;
    在這裏插入圖片描述

  3. docker pull 下載鏡像
    docker pull 鏡像名稱:[TAG]
    注意:不加TAG,默認下載最新版本latest

  4. docker rmi 刪除鏡像
    ① 刪除單個:docker rmi 鏡像名稱:[TAG]
    如果不寫TAG,默認刪除最新版本latest

    有鏡像生成的容器再運行時候,會報錯,刪除失敗;
    我們需要加 -f 強制刪除

    ② 刪除多個:docker rmi -f 鏡像名稱1:[TAG] 鏡像名稱2:[TAG]
    中間空格隔開

    ③ 刪除全部:docker rmi -f $(docker images -qa)

Docker 容器常用命令

  1. Docker創建並啓動容器
    docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

    –name=“容器新名字”:爲容器指定一個名稱;
    -i:以交互模式運行容器,通常與-t或者-d同時使用;
    -t:爲容器重新分配一個僞輸入終端,通常與-i同時使用;
    -d: 後臺運行容器,並返回容器ID;
    -P: 隨機端口映射,容器內部端口隨機映射到主機的端口
    -p: 指定端口映射,格式爲:主機(宿主)端口:容器端口

    啓動普通容器: docker run --name 別名 鏡像ID
    啓動交互式容器: docker run -it --name 別名 鏡像ID 來運行一個容器,取別名,交互模式運行,以及分配一個僞終端,並且進入僞終端;

    注意:
    ① 啓動普通容器的方式基本不用,沒有僞終端,沒有太大價值;
    ② 啓動交互式容器的方式,容器一創建完畢,立即進入僞終端

    守護式方式創建並啓動容器
    docker run -di --name 別名 鏡像ID

    執行完命令後,終端依然再宿主機上;

    啓動容器,並執行/bin/bash命令;
    docker run -it --name 別名 鏡像ID /bin/bash命令

    端口映射;
    docker run -it -p 8888:8080 tomcat
    docker run -it -P tomcat

  2. Docker列出容器

    docker ps [OPTIONS]

    OPTIONS說明:
    -a :顯示所有的容器,包括未運行的。
    -f :根據條件過濾顯示的內容。
    –format :指定返回值的模板文件。
    -l :顯示最近創建的容器。
    -n :列出最近創建的n個容器。
    –no-trunc :不截斷輸出。
    -q :靜默模式,只顯示容器編號。
    -s :顯示總的文件大小。

    docker ps 查看正在運行的容器
    docker ps -a 查看所有容器
    docker ps -n 2 顯示最近創建的2個容器
    docker ps -f status=exited 查看停止的容器

  3. Docker退出容器

    exit 容器停止退出
    ctrl+P+Q 容器不停止退出

  4. Docker進入容器

    ① docker attach 容器ID or 容器名

    ② Docker進入容器執行命令
    docker exec -it 容器名稱 或者 容器ID 執行命令

  5. Docker啓動容器

    docker start 容器ID or 容器

  6. Docker重啓容器

    docker restart 容器ID or 容器名

  7. Docker停止容器
    docker stop 容器ID or 容器名

    暴力刪除,直接殺掉進程 (不推薦)
    docker kill 容器ID or 容器名

  8. Docker刪除容器

    docker rm 容器ID

    如果刪除正在運行的容器,會報錯,我們假如需要刪除的話,需要強制刪除;
    強制刪除docker rm -f 容器ID

    刪除多個容器
    docker rm -f 容器ID1 容器ID2 中間空格隔開

    刪除所有容器
    docker rm -f $(docker ps -qa)

  9. Docker容器日誌

    $ docker logs [OPTIONS] CONTAINER

    Options:
    –details 顯示更多的信息
    -f, --follow 跟蹤實時日誌
    –since string 顯示自某個timestamp之後的日誌,或相對時間,如42m(即42分鐘)
    –tail string 從日誌末尾顯示多少行日誌, 默認是all
    -t, --timestamps 顯示時間戳
    –until string 顯示自某個timestamp之前的日誌,或相對時間,如42m(即42分鐘)

    博主推薦,簡單粗暴方式,直接去docker容器文件裏找;
    具體未知:/var/lib/docker/containers/

over。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章