簡單分享一下最近學習docker的一些知識 先從安裝開始 下面 下麪的虛擬機器預設是Centos系統的
其他系統安裝 ubuntu windows MacOS 可以看其他大牛寫的 很全
從 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 6.5及以後版本時,需要內核版本>=2.6.32-431,因爲這些內核包含了執行Docker的一些特定修改。
如果後期要用harbor建議現在就把內核升到4.0以上 下面 下麪有內核下載連線
linux-5.4.56版本內核tar包 速度慢的可以下這個
$ uname -r
2.6.32-431.17.1.el6.x86_64
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以上
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
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 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:
systemctl start docker
檢視docker版本資訊
docker --help #幫助
docker –v #簡單檢視版本
docker --version #檢視簡單的版本資訊 同上
docker version #檢視版本
docker info #檢視資訊
【可選】設定虛擬機器開機啓動:
chkconfig docker on
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 stop 容器名稱
方式一:通過pull拉取映象
方式二:通過Dockerfile來構建新的映象
方式三:通過Docker load 來載入映象的tar包
後面再詳細寫
$ 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
$ sudo yum -y remove containerd.io.x86_64 \
docker-ce.x86_64 \
docker-ce-cli.x86_64
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 映象十分緩慢,可以需要設定加速器來解決。
也可使用私人映象加速器地址,如使用阿裡雲的映象加速器:登錄阿裡雲->產品->搜尋"容器映象服務"->映象庫->映象加速器。(左下角)
阿裡雲的映象加速器
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的搭建下次再分享。