Docker創(chuàng)建自己的鏡像與上傳流程詳解
引入
在部署畢節(jié)服務(wù)器時(shí)遇到了個(gè)問(wèn)題:
因?yàn)樵谌_(tái)服務(wù)器做好ovirt-engine超融合后,在主節(jié)點(diǎn)服務(wù)器上部署可視化平臺(tái)需要安裝mysql5.7,但是安裝mysql時(shí)需要卸載一些依賴,但是由于怕影響原有的postgresql數(shù)據(jù)庫(kù)和ovirt-engine的服務(wù)組件,選擇了用docker容器部署mysql數(shù)據(jù)庫(kù)。
在順利創(chuàng)建好容器,配置好mysql遠(yuǎn)程連接后,發(fā)現(xiàn)用navicat死活連不上,部署mysql8也連不上,能改的配置文件都改了,路由也開(kāi)放了,端口也開(kāi)放了,就是不得行。非常懷疑是ovirt-engine超融合的一些設(shè)置影響了docker容器和宿主機(jī)的網(wǎng)絡(luò)溝通。
后面沒(méi)辦法就創(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ò)中,但沒(méi)有獨(dú)立IP地址。
docker使用了Linux的Namespaces技術(shù)來(lái)進(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倉(cāng)庫(kù)
注冊(cè)登錄創(chuàng)建自己的倉(cāng)庫(kù),可以是公共也可以是私有

注意自己的倉(cāng)庫(kù)命名,最好是見(jiàn)名知義,因?yàn)閭}(cāng)庫(kù)名就是后面鏡像的名稱
在服務(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則是鏡像倉(cāng)庫(kù)的名字。 此時(shí)我這個(gè)鏡像名是不符合規(guī)則的,如果直接推送會(huì)報(bào)錯(cuò),必須按照用戶名/倉(cāng)庫(kù)名:版本標(biāo)簽 這樣的規(guī)則命名,這就是為啥上面創(chuàng)建倉(cāng)庫(kù)的時(shí)候說(shuō)最好要見(jiàn)名知義。
更改鏡像名字(重新打一個(gè)標(biāo)簽)
docker tag cent7sql:5.7 echoo2787/centos7:sql5.7

這樣的命名就可以啦
提交鏡像
docker push echoo2787/centos7:sql5.7
這個(gè)命令在創(chuàng)建倉(cāng)庫(kù)完成后那個(gè)頁(yè)面右邊可以找到
等待推送完成就好,如果報(bào)拒絕錯(cuò)誤,檢查是不是鏡像命名和要求不一致。
到此這篇關(guān)于Docker創(chuàng)建自己的鏡像與上傳流程詳解的文章就介紹到這了,更多相關(guān)Docker創(chuàng)建鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- docker-maven-plugin打包鏡像并上傳到私有倉(cāng)庫(kù)
- Docker如何制作自己鏡像并上傳dockerhub
- 利用nexus作為私庫(kù)進(jìn)行代理docker,進(jìn)行上傳和下載鏡像操作
- springboot docker jenkins 自動(dòng)化部署并上傳鏡像的步驟詳解
- Docker上傳鏡像至私有倉(cāng)庫(kù)的方法示例
- docker鏡像倉(cāng)庫(kù)hub.docker.com無(wú)法訪問(wèn)的解決方法
- DockerHub 鏡像倉(cāng)庫(kù)的使用詳解
- docker 上傳鏡像到hub倉(cāng)庫(kù)的操作步驟
相關(guān)文章
使用Dockerfile.dockerignore提升Docker鏡像構(gòu)建速度
這篇文章主要為大家介紹了使用Dockerfile.dockerignore提升Docker鏡像構(gòu)建速度,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-10-10
docker使用Dockerfile構(gòu)建鏡像的方法
這篇文章主要介紹了docker使用Dockerfile構(gòu)建鏡像的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
mac下docker 安裝 ES的詳細(xì)過(guò)程
這篇文章主要介紹了mac下docker 安裝 ES的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
windows安裝Docker與docker-compose套裝的詳細(xì)教程
這篇文章主要介紹了windows安裝Docker與docker-compose套裝的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Docker安裝MySQL并使用Navicat連接的操作方法
這篇文章主要介紹了Docker安裝MySQL并使用Navicat連接,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
5款超好用的開(kāi)源 Docker工具強(qiáng)烈推薦
這篇文章主要介紹了5款超好用的開(kāi)源 Docker工具強(qiáng)烈推薦,這5個(gè)工具非常實(shí)用,有需要同學(xué)可以學(xué)習(xí)下2021-03-03

