docker安裝及常見命令


1. docker基礎知識

1.1 什么是docker


docker就是一項容器虛擬化的技術.

容器虛擬化技術:簡單而言,就是把開發環境和代碼一起打包做成一個容器,放在其他電腦上就可以直接運行。類似於虛擬機,把環境配好,就可以直接運行了,但是容器虛擬化和虛擬機還是有很大區別。

1.2 docker能做什么

一次構建,隨處運行。

更快捷的應用交付和部署;更便捷的升級和擴縮容;更加簡單的系統運維;更高效的計算機資源利用。

它解決了虛擬機存在的資源占用多,冗余步驟多和啟動慢的特點,剔除掉虛擬機中模擬的硬件以及不必要的的東西都剔除了。保留了必要的內核和用戶自己根據需要安裝的容器,所以更加輕便。


1.3 docker三要素

鏡像(image):docker鏡像,image,就是一個只讀的模板,鏡像可以用來創建docker容器,一個鏡像可以創建多個容器。

容器(container): docker利用容器獨立運行的一個或者一組應用。容器就是鏡像創建的具體實例,可以把容器看成是一個簡易版的linux系統

倉庫:就是存放鏡像的地方


1.4 安裝docker

docker要求cent os 系統的內核要高於3.10.

本次安裝選擇在cent os7上進行安裝。

# 查看linux版本
uname -r
3.10.0-1160.el7.x86_64

卸載舊版本(如果之前安裝過舊版本)

yum remove docker  docker-common docker-selinux docker-engine

添加yum依賴

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

設置yum源

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

查看所有倉庫中所有docker版本,並選擇特定版本安裝

yum list docker-ce --showduplicates | sort -r

安裝docker

 yum install docker-ce

啟動並加入開機自啟

# 啟動
systemctl start docker
# 允許開機自啟
systemctl enable docker

驗證是否安裝成功

docker version
Client: Docker Engine - Community
 Version:           20.10.10
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        b485636
 Built:             Mon Oct 25 07:44:50 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.10
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.9
  Git commit:       e2f740d
  Built:            Mon Oct 25 07:43:13 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.11
  GitCommit:        5b46e404f6b9f661a205e28d59c982d3634148f8
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

⚠️ 國外鏡像一般很難訪問,建議配置阿里雲鏡像

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

1.5 阿里雲鏡像加速配置

阿里雲鏡像加速地址: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

進入后里面有配置加速器信息

vi /etc/docker/daemon.json

驗證配置阿里雲鏡像加速器成功

docker info后顯示Registry Mirrors中顯示有阿里雲

image-20211117101540513


2. docker 鏡像命令

2.1 查看本地鏡像

[root@javatools ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
options 含義
-a 列出本地所有的鏡像,包含中間鏡像
-q 只顯示鏡像id
--digests 顯示鏡像的摘要信息
--no-trunc 顯示完整的鏡像信息

2.2 查找鏡像

[root@javatools ~]# docker search hello-world
NAME                                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
hello-world                                Hello World! (an example of minimal Dockeriz…   1575      [OK]
參數 說明 舉例
--no-trunc 顯示出完整的鏡像描述 docker search hello-world --no-trunc
--filter 過濾 docker search --filter=stars=30 --no-trunc hello-world

2.3 拉取鏡像

# 如果不輸入:tag, 其實默認是:latest
docker pull image_name: tag

image-20211117102313174

2.4 刪除某個鏡像

docker rmi 某個鏡像名字ID

⚠️ -f 強制刪除

命令 說明
docker rmi -f 鏡像id 刪除一個
docker rmi -f 鏡像1:TAG 鏡像2:TAG2 刪除多個
docker rmi -f $(docker images -qa) 刪除全部

3. docker 容器命令

有鏡像才能創建容器。本次下載一個cent os 鏡像。 docker pull cent os

3.1 新建並啟動容器

docker run [options] image [command][args]
參數說明 含義
-name 容器新名字,為容器指定一個名字
-d 以后台運行容器,並返回容器id
-i 以交互式模式運行容器,通常與-t同時使用
-t 為容器重新分配一個偽輸入終端,通常與-i 同時使用
-P 隨機端口映射
-p 指定端口映射

比如: docker run -it centos:latest /bin/bash 后面的 /bin/bash 寫不寫, 都是一樣的。啟動成功后,終端左邊會顯示容器的ID

image-20211117105433255

docker run --name="centos7" -it centos 啟動一個容器名為centos7

3.2 列出所有正在運行的容器

docker ps [OPTIONS]
參數說明 含義
-a 列出當前所有正在運行的容器+歷史運行過的
-l 顯示最近創建的容器
-n 顯示最近n個創建的容器
-q 靜默模式,只顯示容器編號
--no-trunc 不截斷輸出
docker ps -a

image-20211117110410164

3.3 退出容器

  • exit: 容器停止退出
  • ctrl+p+q: 容器不停止退出

3.4 啟動容器

docker start 容器id或容器名

3.5 重啟容器

docker restart 容器id或容器名

3.6 停止容器

docker stop 容器id或容器名

3.7 強制停止容器

docker kill 容器id或容器名

3.8 刪除已停止的容器

docker rm 容器id

一次性刪除所有容器

docker rm -f $(docker ps -a -q)

3.9 啟動守護式容器

docker run -d 容器名	

docker容器后台運行,就必須要有一個前台進程,容器運行的命令如果不是那些一直掛起的命令(top、tail), 就會自動退出。這是由於docker的機制問題。

3.10 查看容器日志

docker logs -f -t --tail 容器id
參數 說明
-t 加入時間戳
-f 跟隨最新的日志打印
--tail --tail 數字 顯示最后多少條

3.11 查看容器內部運行的進程

docker top 容器id

3.12 查看容器內部細節

docker inspect 容器id

3.13 進入正在運行的容器並以命令行交互

  • docker exec -it 容器ID bashShell
  • docker attach 容器ID

區別

attach 直接進入容器啟動命令的終端,不會啟動新的進程

exec 是在容器中打開新的終端,並且可以啟動新的進程

3.14 文件拷貝

docker cp  容器ID:容器內路徑 目的主機路徑

4. docker卸載

# 停止服務
systemctl stop docker
# 移除docker
yum -y remove docker-ce
# 刪除相關依賴包
rm -rf /var/lib/docker

5. 安裝過程排錯

  • 報錯1錯誤:軟件包:docker-ce-rootless-extras-20.10.12-3.el7.x86_64 (docker-ce-stable)需要:slirp4netns >= 0.4
    錯誤:軟件包:docker-ce-rootless-extras-20.10.12-3.el7.x86_64 (docker-ce-stable)需要:fuse-overlayfs >= 0.7
    錯誤:軟件包:3:docker-ce-20.10.12-3.el7.x86_64 (docker-ce-stable)需要:container-selinux >= 2:2.74
    錯誤:軟件包:containerd.io-1.4.13-3.1.el7.x86_64 (docker-ce-stable)需要:container-selinux >= 2:2.74,您可以嘗試添加 --skip-broken 選項來解決該問題。

image-20220310141248034

根據報錯提示信息,可以看出是container-selinux版本低或沒有安裝的原因,導致系統不兼容,所以需要升級重新安裝。

# 從阿里源拉取依賴
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release -y
# 安裝最新的contain-selinu
yum install container-selinux -y 

再次執行docker安裝命令yum install docker-ce -y,安裝成功。

image-20220310141632493

參考文檔

  1. Docker常用命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM