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