前面學習了 docker 的命令和實際的用法,現在來實戰一下。編排一個服務,也就是項目部署。
目前我們在一個閉源環境下工作,介紹一些工作流程和部署項目的方法。
該工作流程比較特殊
所謂閉源環境就是
- 沒有網絡,客戶機沒有鏈接外網。
- 不能使用U盤連接客戶機,因為那是涉密機器。
- 我們自己的電腦沒有限制,可以連接外網,我們連接的自己的熱點。
於是,我們所做的修改需要做成鏡像、刻成光盤,然后拷貝到客戶機,上傳到服務器,然后部署,部署完成后,最后測試修改內容是否符合預期。
項目部署
本機操作
1. 發布鏡像
- 代碼編寫完成,先
npm run build
編譯成功,確保代碼能通過編譯檢測 - 保證登錄了 docker,然后運行 sh 腳本,一般位於
docker
目錄下,進而發布鏡像 - 如果 sh 腳本中沒有
docker push
命令,則需要另外運行該命令,將其發布到docker hub
2. 導出鏡像
- 如果是導出別人的鏡像,則需要先拉取鏡像
docker pull imageName
- 導出鏡像
docker save url/<imageName>:<tagName>
><imageName>:<tagName>
這樣就在當前目錄導出了該鏡像
3. 刻盤
將上面的鏡像文件拷貝到光盤中,刻錄,等待刻錄完成。
客戶電腦操作
4. 將鏡像上傳到服務器
- 在客戶機上新建目錄存放光盤中的鏡像文件,新建的文件夾最好包含日期和項目名,如 20191105_biaozu,這么做的目的是備份鏡像文件。同時也為下一步將文件拷貝到服務器作准備。
- 將 20191105_biaozu 中的鏡像文件拷貝到服務器目錄
/../images/<projectName>
將光盤中的文件拷貝到客戶硬盤,然后再將客戶硬盤里的文件拷貝到服務器所花費的時間要少於單獨從光盤拷貝文件到服務器。
服務器操作
5. 導入鏡像
- 進入到拷貝鏡像的服務器目錄,為了好說明,稱為鏡像目錄。實際上鏡像可以放到任何地方,只要在保證在服務器上了,就能保證是正確的。如:
data/datagrand/images/bizozu_images
- 命令
ll
查看該目錄下是否有剛導入的鏡像文件,同時確認鏡像名<imageName>
和標簽<tagName>
。 - 將拷貝到服務器的鏡像導入,在包含鏡像的目錄下執行命令
docker load -i <imageName>:<tagName>
,這個命令是 save 反向操作。在本地將我們本地倉庫里面的鏡像保存(導出)到我們指定的目錄。在服務器上,將鏡像導入到指定的目錄。
導入鏡像后可以通過命令docker images|grep <imageName>
查看指定鏡像的信息,確保鏡像已經導入成功
6. 更改鏡像名
- 進入到部署目錄,如:
data/datagrand/images/bizozu_deploy
- 更改 docker-compose.yml,將里面的 image 屬性(所有有改動的鏡像)改成導入的鏡像名。
7. 刪除容器、鏡像
使用命令 docker-compose down
刪除容器/鏡像
8. 啟動容器、鏡像
使用命令 docker-compose up
啟動容器/鏡像
刪除容器然后啟動容器可以使用 docker-compose restart 重啟,一步完成,但是該命令不會對修改的 docker-compose.yml 文件生效。
docker-compose down 與 docker-compose up 能夠重啟鏡像,並對修改的 docker-compose.yml 生效。
可用命令 docker images|grep <imageName>
查看指定容器的信息 ll
列出所有的文件和目錄,包含文件最后修改時間、文件大小等信息,並且每個每一項換行顯示