初探docker
什麼是docker?docker就是一種虛擬化技術,將一個服務虛擬化成一個擁有作業系統核心作為基石的快速使用服務。不用擔心環境不同服務效果
不同。
docker 官網可以從中央倉庫中看到一件奇怪的事情,為什麼有的docker 映象同樣的服務,有的映象佔用磁碟空間就大,有的就小呢?
這是因為 docker映象所製作的系統核心不同,比如ubuntu,centos,ubuntu系統核心所佔用的空間就比centos要小,但是具體使用哪一種
核心所打包的映象還是要根據公司來,另外說一句:佔用的大小不影響服務的使用,服務都是一樣。但是如果磁碟空間緊張還是選擇小的為好。
docker中 存在一個映象標籤,TAG,這個表示是由數字 + 字母展示的,實際上該欄位展示的長度達到256位,64位十六進位制。經過docker的計算
保留了12位。
接下來安裝Docker記錄的一些命令,採用的是 CentOS 7.9 Mini版本,無外掛原生核心作業系統,所以最好完全按照以下操作:
另外附上我的同款系統連線,方便直接配置使用:https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
一般來說原生的yum 再使用install的時候會 出現 network 網路環境異常,因此需要修改如下:
/etc/sysconfig/network-sripts/ifcfg-ens33
將裡面的 最後一行no 修改為yes,之後 service network restart 重啟網路服務
因為我是在VM軟體中安裝的作業系統,ip addr 看不到自己的作業系統網路ip所以需要以下命令:
yum search ifconfig // 檢索外掛
yum install net-tools.x86_64 // 具體的忘記了= =仔細看search結果的最後一行,類似的就是
ifconfig // 可以看到所處網路ip ,可以使用習慣的工具連線到linux環境進行使用
接下來就是Docker
DNS 配置
echo -e 'nameserver 223.5.5.5' >> /etc/resolv.conf
echo -e 'nameserver 223.6.6.6' >> /etc/resolv.conf
systemctl restart network
修改時間
rm -f /etc/localtime
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate cn.pool.ntp.org
修改yum源
# 阿里映象
# https://opsx.alibaba.com/mirror
# http://mirrors.aliyun.com/repo/
# 安裝 wget
yum install -y wget
# 備份 CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 使用阿里 YUM 源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除 YUM 快取 && 更新 YUM 快取
yum clean all && yum makecache
# 安裝 EPEL 源
yum install -y epel-release
# 使用阿里 EPEL 源
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 清除 YUM 快取 && 更新 YUM 快取
yum clean all && yum makecache
安裝基礎包
yum install -y curl telnet vim sudo crontabs ntp tcpdump iptables man zip unzip bzip2 tar git rsync
到此Linux的環境配置就結束了,開始安裝Docker
首先需要明白,docker映象如果使用原生的那麼就會從docker官網下載以後的映象資源,阿里提供了映象加速服務。上圖是最新版本的阿里雲 容器映象服務頁面,在映象工具下面
之後可以仿照 點選參考文件右邊的docker-ce跟著官方文件走,進行配置甚至直接安裝完畢Docker環境
以下以我的作業系統 CentOS 7.9 2009 Mini 為例子,進行的配置:
# step 1: 安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 新增軟體源資訊
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新並安裝 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 開啟Docker服務
sudo service docker start
# Step 5: 設定Docker開機自啟
sudo systemctl enable docker
注意:其他注意事項在下面的註釋中
# 官方軟體源預設啟用了最新的軟體,您可以通過編輯軟體源的方式獲取各個版本的軟體包。例如官方並沒有將測試版本的軟體源置為可用,你可以通過以下方式開啟。同理可以開啟各種測試版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 將 [docker-ce-test] 下方的 enabled=0 修改為 enabled=1
#
# 安裝指定版本的Docker-CE:
# Step 1: 查詢Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2 : 安裝指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
# 注意:在某些版本之後,docker-ce安裝出現了其他依賴包,如果安裝失敗的話請關注錯誤資訊。例如 docker-ce 17.03 之後,需要先安裝 docker-ce-selinux。
# yum list docker-ce-selinux- --showduplicates | sort -r
# sudo yum -y install docker-ce-selinux-[VERSION]
# 通過經典網路、VPC網路內網安裝時,用以下命令替換Step 2中的命令
# 經典網路:
# sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
# VPC網路:
# sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
一切完成之後,可以嘗試檢視docker環境是否成功
docker version
接下來是配置Docker的 映象加速服務
同樣的跟著官方文件走就可以:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
# 這裡就是舉個例子,具體的看各自的控制檯
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
這一切配置好之後Docker就可以正常的使用了
接下來是學習過程中遇到的一些命令也做了如下記錄,不過一般hub.docker.com在需要下載的映象說明文件中都會存在 該映象的使用方法和映象個性化的引數啟動項。
docker 的常用命令:
docker pull -- 從映象中央庫 下載映象到本地docker docekr pull image:tags
docker images -- 檢視所有的已下載的映象
docker image ls -- 與上面的功能相同
docker save -- 將映象打包儲存到磁碟中 docker save image:tags -o target.tar
docker load target.tar -- 將打包的映象從磁碟中讀取到docker
docker search image -- 從中央倉庫搜尋該關鍵字存在映象 docker search redis,但是不推薦使用,不太容易看清系統核心等資訊
docker inspect image:tags -- 檢視映象以及標籤的詳細資訊,裡面包含了環境中會存在哪些會安裝什麼東西
docker inspect -f {{".Size"}} redis:6.0.9 -f 可以直接篩選自己可以想看到的資訊
docker rmi image:tags -- 刪除指定映象
docker image rm image:tags -- 同上一樣也是刪除映象
docker history image:tags -- 檢視映象的層次建立資訊
docker tag image:tags target:tags -- 修改映象的名稱資訊,會建立一個新的映象。注意:會存在2個,不是真正意義的改名稱
這一塊需要注意,經過測試如果tag 複製一份別名的映象如果存在name + tag 相同的情況時,會直接將之前的給覆蓋不會報錯。
docker run -it --rm image:tags -- 在容器啟動映象並且進入容器 但是外部沒有辦法訪問
docker run -it --rm -p hostPort:dockerPort iamge:tags -- 同上,但是對外部開啟了主機的埠對映,宿主主機只需要訪問hostPort就可以
訪問到容器中的服務,docker run -it --rm -p 8080:6379 redis:6.0.9 就可以通過8080 連線到 docker容器中的服務進行使用
--name 給予建立的容器一個名字、不允許重複
-p 繫結docker容器和主機的埠對映,不能衝突
-i 互動式啟動
-t 給予一個偽端
--rm 當斷開容器容器自動刪除
-d 後臺執行啟動 不能與rm搭配使用
docker logs -- 檢視程式終端啟動的控制檯列印資訊
-f 滾動列印
docker ps -- 檢視執行中的全部容器
-a 查詢包含不執行的容器
docekr rm container -- 刪除容器,不允許刪除正在執行的。支援按照名稱和容器id刪除
-f 強制刪除容器
docker start container -- 啟動已經建立的容器,服務就會啟動
docker stop container -- 停止容器的執行,服務也就會停止
docker restart container -- 重新啟動容器
docker create -it --name name -p hostPort:dockerPort image:tag -- 通過映象建立容器,但是不啟動
docker exec -- 進入容器的終端進行操作
docker kill -- stop無法停止容器,使用kill 殺死容器