瞭解學習使用docker
docker是專案開發部署相關工具容器,本文通過官網等資料閱讀學習,簡單介紹一些基本使用操作:
- docker是什麼
- 2.docker安裝使用
- 連線進入docker容器
- docker拉取複製和上傳
docker是什麼
為什麼會出現docker,常使用專案部署開發的人自然能理解,因為docker讓服務部署更快更高效。
下面說一下docker是什麼,有什麼用,等同與說明為什麼會出現docker這種技術。
docker主要是讓服務部署更高效。官網稱之為容器 container,在專案開發中開發環境/測試環境/生產環境通過docker容器技術統一,減少環境誤差導致產生的錯誤,提高開發部署速度,減少部署維護成本。
映象技術,隔離環境
我認為docker是一種映象服務技術,他將原來linux上執行的服務全部放在docker內執行,linux和docker之間有一定的物理隔離和軟體版本隔離效果,並且可以複製多個程式而避免重新安裝,很好的提高伺服器專案部署相關的工作效率,且有增加伺服器安全係數。
(甚至介紹通過docker,可以讓linux上的程式也能在windows照常執行,目前還沒試過)
高效部署服務
當你有一個服務開發部署好了,伺服器是linux,裡面安裝了mysql,nginx,java-application,redis,jdk8;現在伺服器要擴充套件,同樣的服務部署到多臺伺服器,要怎麼做才高效? 重新安裝mysql,nginx,jdk8 ,然後各種配置埠密碼各種引數,再重新啟動每個程式? 當你作為一個部署負責人的時候會覺得重複繁瑣,並且配置細節很多,不小心會出差錯,這時候映象技術docker就能使服務部署快速,並避免少犯錯,這時候docker可真是個好東西。
將原來的執行服務放在docker內執行,需要部署到其他伺服器時,打包整個docker生成docker映象,然後複製docker到新的linux伺服器啟動就好了,mysql,nginx,redis,等等很多東西不需要重新配置部署,只需要啟動映象docker和一些個性化的指令碼。
安裝docker
# 首先安裝需要用到的工具
yum install -y yum-utils #安裝工具 環境
#指定儲存庫
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
查詢可安裝版本
yum list docker-ce --showduplicates | sort -r # 檢視可用安裝版本
## 找出stable版本的,表示穩定版,本次選的是
## docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable ##
## 安裝
yum install docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
## 規則 3:18.09.0-3.el7 為版本資訊,那麼安裝就是 ce-後面加上18.09.0
## 取3:18.09.0-3.el7的':'和'-'之間的字元"18.09.0"
執行測試
docker run hello-world
使用示例
拉取docker容器
拉取一個 redis 容器 並執行
# 拉取 redis容器
docker pull redis
# 檢視當前容器有哪些
docker images
# 執行容器 -p 指定埠
docker run -p 3123:6379 --name some-redis -d redis redis-server --appendonly yes
# 通過docker 啟動redis服務
# 訪問伺服器3123埠時,對映到docker的6379埠
# docker服務名 some-redis
# --appendonly yes redis持久化,容器關閉後再啟動,redis內的資料不失效
連線進入docker 容器
docker執行後,我們可以進入容器,上面是redis服務容器,可以理解為一個centos伺服器裡面啟動了redis服務,我們可以連線進去,並且裡面是一個虛擬的linux環境
# 檢視在執行的docker容器服務
docker -ps
# exec 表示連線進入容器 32jd3h21正在執行的容器的id
docker exec -it 32jd3h21 /bin/bash
docker複製上傳
當我們定義好一個容器的環境,我們可以將容器映象上傳的倉庫,用於同一開發的環境,當其他人員也參與當前專案開發是,拉去同一個docker映象容器,避免了專案程式碼執行環境差異。
docker hub 是專門用於docker映象服務的倉庫,我們需要先註冊帳號,註冊好後,建立倉庫(和github類似)
讓後我們在伺服器裡面先登入dockerhub賬號,然後將需要上傳的映象push到倉庫
# 檢視映象
docker images
a4sdfa2 為某個docker容器的id
# 複製建立一個要提交到遠端的映象容器
docker commit -a "author" -m "description" a4sdfa2 web1
# 設定倉庫 web1 本地容器名 username dockerhub使用者名稱 rep-url 使用者的倉庫名 v2 標籤名
docker tag web1 username/rep-url:v2
# 拉去上傳的docker
docker pull username/rep-url:web1
# 最後通過pull命令拉取映象
docker 容器中放專案程式碼嗎?
一般專案開發,程式碼修改較頻繁,容器主要是用於同一執行環境,不應含有具體開發專案程式碼。
給團隊使用的docker容器應該是定義程式碼執行環境,而不是程式碼本身。每個開發人員拉取了docker容器後,負責業務模組不同,很可能要編寫的程式碼也不一樣,容器放入程式碼反而多餘;程式碼同步這快應該是通過git,svn等程式碼倉庫工具完成更合適。