Docker安裝和簡單的使用

2020-08-10 17:40:01

簡單分享一下最近學習docker的一些知識   先從安裝開始   下面 下麪的虛擬機器預設是Centos系統的

其他系統安裝 ubuntu windows MacOS 可以看其他大牛寫的 很全

其他系統安裝docker

首先簡單介紹一下Docker

從 2017 年 3 月開始 docker 在原來的基礎上分爲兩個分支版本: Docker CE 和 Docker EE。

Docker CE 即社羣免費版,Docker EE 即企業版,強調安全,但需付費使用。

 

核心概念

1)映象images,事先做好一些基礎功能(軟體),可以在映象上在來安裝新的內容。(映象一般都是隻讀的)

2)容器container

3)數據卷volume,把數據對映到linux磁碟目錄,業務把數據寫入這個目錄,容器重新啓動時,自己載入數據卷,數據又恢復了。(爭論,數據庫這種方式需求適不適合docker)

4)倉庫repository,maven倉庫概念一樣

Docker執行對內核要求比較高,因此一般建議直接在Ubuntu這樣的平臺執行。但作爲一個容器標準,Docker也是支援其他如CentOS, Mac OS X, Windows等平臺。目前Docker支援以下版本CentOS:

  • CentOS 7(64位元)
  • CentOS 6.5(64位元)及以後

在執行CentOS 6.5及以後版本時,需要內核版本>=2.6.32-431,因爲這些內核包含了執行Docker的一些特定修改。

如果後期要用harbor建議現在就把內核升到4.0以上  下面 下麪有內核下載連線

https://www.kernel.org/  官網鏈接

linux-5.4.56版本內核tar包    速度慢的可以下這個

檢視內核版本

$ uname -r
2.6.32-431.17.1.el6.x86_64

 

Docker安裝

Device Mapper

Docker預設使用AUFS作爲儲存驅動,但是AUFS並沒有被包括在Linux的主線內核中。CentOS中可以使用Device Mapper作爲儲存驅動,這是在2.6.9內核版本引入的新功能。我們需要先確認是否啓用該功能:

ls -l /sys/class/misc/device-mapper
顯示如下就是有
lrwxrwxrwx 1 root root 0 May  1 20:55 /sys/class/misc/device-mapper -> ../../devices/virtual/misc/device-mapper

如果沒有檢測到Device Mapper,需要安裝device-mapper軟體包:

sudo yum install -y device-mapper

然後重新載入dm_mod內核模組:

sudo modprobe dm_mod

 

前提

CentOS 7以上

  • CentOS7能上外網
  • yum -y install gcc
  • yum -y install gcc-c++

 

解除安裝舊版本

yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine

安裝依賴包

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

設定stable映象倉庫

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
或
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
docker官網的映象很全,阿裡的速度快 按需求自己選

更新yum軟體包索引

yum makecache fast

如果這是自新增 Docker 映象倉庫以來,首次重新整理軟體包索引,系統將提示您接受 GPG 金鑰,並且將顯示此金鑰的指紋。驗證指紋是否正確,並且在正確的情況下接受此金鑰。指紋應匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。

 

安裝指定版本

yum list docker-ce.x86_64  --showduplicates | sort -r    #從高到低列出Docker-ce的版本

該軟體包名稱是軟體包名稱(docker-ce)加上版本字串(第二列),從第一個冒號(:)一直到第一個連字元,並用連字元(-)分隔。

例如:指定版本(docker-ce-19.03.9)進行安裝:

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 例如:
yum install docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io

安裝最新版本:

yum -y install docker-ce

啓動docker

執行以下命令啓動docker:

systemctl start docker

檢視docker版本資訊

docker --help #幫助
docker –v #簡單檢視版本
docker --version #檢視簡單的版本資訊  同上
docker version #檢視版本
docker info #檢視資訊

【可選】設定虛擬機器開機啓動:

chkconfig docker on

使用

 

檢視docker日誌

cat /var/log/docker

搜尋映象

docker search tomcat

 注:start代表受歡迎程度。OFFICIAL代表官方版本

 

檢視當前所有映象

docker images

檢視當前所有容器

docker ps

下載映象

如果是試試可以用Nginx  centos映象比較大

docker pull centos7.8.2003  #下載centos7.8.2003映象檔案

執行生成容器

docker run hello-world
或者 docker start 容器名稱    run是建立一個新容器並執行
或者 docker start 容器id      start是開啓一個容器並使其在後台執行
如果本地沒有hello-world 會自動先拉取映象檔案再啓動
輸出Hello from Docker!提示以後,hello world 就會停止執行,容器自動終止。

:如果伺服器down掉 也就是docker掉了  啓動伺服器 啓動docker之後 之前的容器相當於關閉了 不要重新run 這時用docker ps看不到關掉的容器 可以用docker ps -a 這個可以找到上次執行的容器id直接 docker restart 容器的id 即可重新執行容器 

停止docker

docker stop 容器名稱

 

Docker映象有3種生成方式

方式一:通過pull拉取映象

方式二:通過Dockerfile來構建新的映象

方式三:通過Docker load 來載入映象的tar包

後面再詳細寫

 

 

刪除

查詢刪除docker

$ sudo yum list  installed | grep docker
containerd.io.x86_64              1.2.13-3.2.el7             @docker-ce-stable
docker-ce.x86_64                  3:19.03.12-3.el7           @docker-ce-stable
docker-ce-cli.x86_64              1:19.03.12-3.el7           @docker-ce-stable

刪除docker

$ sudo yum -y remove containerd.io.x86_64 \
                     docker-ce.x86_64 \
                     docker-ce-cli.x86_64  

直接刪除docker執行環境

sudo yum remove docker \
                  docker-io \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

注:以上命令只會刪除docker執行環境,並不會刪除映象,容器,卷檔案,以及使用者建立的組態檔。

 

清除映象和容器檔案

sudo rm -rf /var/lib/docker

手動查詢並刪除使用者建立的組態檔。

 

映象加速

鑑於國內網路問題,後續拉取 Docker 映象十分緩慢,可以需要設定加速器來解決。

Docker國內映象

  • 網易加速器:http://hub-mirror.c.163.com
  • 官方中國加速器:https://registry.docker-cn.com
  • ustc的映象:https://docker.mirrors.ustc.edu.cn

也可使用私人映象加速器地址,如使用阿裡雲的映象加速器:登錄阿裡雲->產品->搜尋"容器映象服務"->映象庫->映象加速器。(左下角)

 

阿裡雲的映象加速器

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

 

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 來設定 Daemon。

請在該組態檔中加入(沒有該檔案的話,請先建一個):

vi /etc/docker/daemon.json 
{ 
  "registry-mirrors": ["https://hub-mirror.c.163.com"] 
} 

設定成功後

CentOS6.5重新啓動:
service docker restart

CentOS7重新啓動:
systemctl daemon-reload     #重新啓動加速組態檔
systemctl restart docker    #重新啓動docker後臺服務

 

其他

低版本的Redhat(6.3)可能要手動掛載cgroup,具體操作方法

https://www.cnblogs.com/caoweixiong/p/12186736.html

 

 

以非root使用者管理docker可以自行百度

Docker守護程式系結到Unix socket而不是TCP埠。預設情況下,Unix socke是root使用者纔有,而其他使用者只能通過使用sudo使用它。Docker守護程式始終以root使用者身份執行。

如果您不想在docker命令前加上sudo,請建立一個名爲docker的Unix組並向其新增使用者。當Docker守護程式啓動時,它會建立一個可由該docker組成員存取的Unix socket。

 

docker的簡單應用和harbor的搭建下次再分享。

最新版2.0.2版本harbor

當前最新版docker-compose1.26.2