Docker創(chuàng)建自己的鏡像與上傳流程詳解
引入
在部署畢節(jié)服務(wù)器時遇到了個問題:
因為在三臺服務(wù)器做好ovirt-engine
超融合后,在主節(jié)點服務(wù)器上部署可視化平臺需要安裝mysql5.7
,但是安裝mysql
時需要卸載一些依賴,但是由于怕影響原有的postgresql
數(shù)據(jù)庫和ovirt-engine
的服務(wù)組件,選擇了用docker
容器部署mysql
數(shù)據(jù)庫。
在順利創(chuàng)建好容器,配置好mysql
遠程連接后,發(fā)現(xiàn)用navicat
死活連不上,部署mysql8
也連不上,能改的配置文件都改了,路由也開放了,端口也開放了,就是不得行。非常懷疑是ovirt-engine
超融合的一些設(shè)置影響了docker
容器和宿主機的網(wǎng)絡(luò)溝通。
后面沒辦法就創(chuàng)建了臺虛擬機作為mysql
服務(wù)器。
隔了一天偶然翻博客發(fā)現(xiàn)docker
容器有個主機模式
,這玩應(yīng)好像直接用的宿主機的網(wǎng)絡(luò)和端口。于是嘗試著在自己公司部署了一下,還真行。然后就想著直接部署好創(chuàng)建一個自己的鏡像,以后方便點。于是就有了這篇部署記錄。
了解Docker的資源隔離和主機模式
此模式下 dockers
容器與宿主機在同一個網(wǎng)絡(luò)中,但沒有獨立IP地址。
docker
使用了Linux
的Namespaces
技術(shù)來進行資源隔離,如:
PID Namespace
隔離進程Mount Namespace
隔離文件系統(tǒng)Network Namespace
隔離網(wǎng)絡(luò)等
一個Docker
容器一般會分配一個獨立的Network Namespace
。但如果啟動容器的時候使用host
模式,那么這個容器將不會獲得一個獨立的Network Namespace
,而是和宿主機共用一個Network Namespace
。容器將不會虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機的IP和端口。
創(chuàng)建 centos7 容器
創(chuàng)建mysql
數(shù)據(jù)目錄
mkdir -p /usr/mysql/data
創(chuàng)建容器
docker run -dit --name mysql5.7 --privileged=true --network=host \ -v /usr/mysql/data:/var/lib/mysql \ centos:centos7 /usr/sbin/init
因為用了主機模式--network=host
,所以就不用映射端口了。
進入容器
docker exec -it mysql5.7 /bin/bash
安裝必要的工具
yum install -y wget
部署mysql5.7
創(chuàng)建Docker Hub倉庫
注冊登錄創(chuàng)建自己的倉庫,可以是公共也可以是私有
注意自己的倉庫命名,最好是見名知義,因為倉庫名就是后面鏡像的名稱
在服務(wù)器上登錄你的 docker
docker login
生成鏡像
創(chuàng)建自己的鏡像
docker commit -m "centos7 with mysql5.7" -a "echoo" a3dee73dbafa cent7sql:5.7
-m
描述信息
-a
作者信息 a3dee73dbafa
容器id
cent7sql:5.7
鏡像名:版本標簽
注意:當你登錄了自己的 docker
后,查看鏡像你會發(fā)現(xiàn)鏡像名多了點東西 如docker.io/centos
,這里的docker.io
就是Docker Hub
的公共用戶名,centos
則是鏡像倉庫的名字。 此時我這個鏡像名是不符合規(guī)則的,如果直接推送會報錯,必須按照用戶名/倉庫名:版本標簽 這樣的規(guī)則命名,這就是為啥上面創(chuàng)建倉庫的時候說最好要見名知義。
更改鏡像名字(重新打一個標簽)
docker tag cent7sql:5.7 echoo2787/centos7:sql5.7
這樣的命名就可以啦
提交鏡像
docker push echoo2787/centos7:sql5.7
這個命令在創(chuàng)建倉庫完成后那個頁面右邊可以找到
等待推送完成就好,如果報拒絕錯誤,檢查是不是鏡像命名和要求不一致。
到此這篇關(guān)于Docker創(chuàng)建自己的鏡像與上傳流程詳解的文章就介紹到這了,更多相關(guān)Docker創(chuàng)建鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jenkins+docker+nginx+nodejs持續(xù)集成部署vue前端項目
本文主要介紹了jenkins+docker+nginx+nodejs持續(xù)集成部署vue前端項目,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05docker搭建jenkins+maven代碼構(gòu)建部署平臺
本文主要介紹了docker搭建jenkins+maven代碼構(gòu)建部署平臺,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06