您好,登錄后才能下訂單哦!
本次總結(jié)涉及到Docker-io、Docker-ce的安裝、CentOS7鏡像的制作、Docker私有倉(cāng)庫(kù)搭建、CentOS6.7環(huán)境下從CentOS7私有倉(cāng)庫(kù)拉取私有鏡像、Docker容器運(yùn)行、CentOS6.5及CentOS7一起運(yùn)行時(shí)兼容性處理等內(nèi)容。
一、Docker基本組件及DevOps運(yùn)作流程
DockerImage:Docker鏡像是一個(gè)運(yùn)行容器的只讀模板。
DockerContainer:Docker容器是一個(gè)運(yùn)行應(yīng)用的標(biāo)準(zhǔn)化單元。
DockerRegistry:Docker注冊(cè)服務(wù)器用來(lái)存放鏡像。
DockerEngine:Docker引擎用來(lái)在主機(jī)上創(chuàng)建,運(yùn)行和管理容器。
二、Docker安裝與配置
由于Docker國(guó)外站點(diǎn)下載較慢或無(wú)法正常下載,需要更新為國(guó)外源之后再進(jìn)行快速安裝配置。CentOS6.5安裝docker-io,CnetOS7安裝docker-ce
#創(chuàng)建docker相關(guān)的目錄 mkdir -p /data/docker #安裝docker運(yùn)行必要工具 sudo yum install -y yum-utilsdevice-mapper-persistent-data lvm2 crontabs #增加docker下載倉(cāng)庫(kù),使用阿里云倉(cāng)庫(kù)下載,國(guó)外站點(diǎn)下載太慢 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast #安裝docker并檢測(cè)docker安裝運(yùn)行情況 sudo yum -y install docker-ce docker version systemctl enable docker.service systemctl start docker.service #配置docker sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json<<-'EOF' {"graph": "/data/docker"} EOF sudo systemctl daemon-reload sudo systemctl restart docker
三、搭建私有Docker倉(cāng)庫(kù)
Docker安裝完成后dockerd的配置文件在/etc/docker/daemon.json中,如果沒(méi)有該文件,可以手動(dòng)創(chuàng)建。
1、安裝配置registry鏡像
pull docker官方的registry的第二個(gè)版本,docker1.6版本以上支持registry2
docker pull registry:2.6.0
或者不指定版本,表示latest版本
docker pull registry
配置daemon.json,去掉docker默認(rèn)的https的訪問(wèn),否則易出現(xiàn)如下問(wèn)題:
Get https://120.78.253.133:5000/v2/:http: server gave HTTP response to HTTPS client
打開(kāi)配置文件
vim /etc/docker/daemon.json
里面的內(nèi)容是一個(gè)json對(duì)象,加上一項(xiàng)insecure-registries,地址自己更改:
{ "insecure-registries":["192.168.1.78:5000"] }
此處設(shè)置無(wú)效時(shí),直接配置服務(wù)程序如下(增加紅色字體內(nèi)容):
vim/usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 172.18.3.242:5000
重啟docker
systemctl daemon-reload systemctl restart docker
2、無(wú)認(rèn)證啟動(dòng)registry容器
上傳到私有倉(cāng)庫(kù)的鏡像時(shí)是默認(rèn)存放在容器的/var/lib/registry/,為了防止刪除registry時(shí)上傳的鏡像也被刪除,所以啟用一個(gè)volume,將上傳的鏡像持久化保存在我們物理機(jī)上,這里保存位置是/opt/registry/。
測(cè)試是否啟動(dòng)容器
curlhttp://192.168.1.78:5000/v2/_catalog
如果返回以下信息表示啟動(dòng)成功
{"repositories":["mynginx"]}
3、私有倉(cāng)庫(kù)推拉私有鏡像
測(cè)試上傳到我們自己的私有registry,首先將mynginx鏡像重命名tag:
docker tag mynginx 192.168.1.78:5000/mynginx
這里需要注意的是重命名的tag必須帶有建立192.168.1.78:5000/這個(gè)前綴,后面的mynginx是新鏡像名,二者名稱可以不同。然后開(kāi)始push到我們建立的私有registry倉(cāng)庫(kù):
docker push 192.168.1.78:5000/mynginx
檢測(cè)推送鏡像的情況,返回以下結(jié)果說(shuō)明推送正常。
curl http://192.168.1.78:5000/v2/_catalog {"repositories":["mynginx"]}
測(cè)試私有倉(cāng)庫(kù)鏡像拉取pull,本機(jī)拉取如下:
docker rmi 192.168.1.78:5000/mynginx
其他物理主機(jī)拉取私有倉(cāng)庫(kù)鏡像,在安裝docker前提下配置/etc/docker/daemon.json文件添加insecure-registries,ip地址自己更改:
{ "insecure-registries":["192.168.1.78:5000"] }
然后重啟docker,執(zhí)行pull,同理也可以上傳鏡像
systemctl daemon-reload systemctl restart docker docker pull 192.168.1.78:5000/mynginx
4、Dockerfile創(chuàng)建服務(wù)鏡像
Dockfile是一種被Docker程序解釋的腳本,Dockerfile由一條一條的指令組成,每條指令對(duì)應(yīng)Linux下面的一條命令。Docker程序?qū)⑦@些Dockerfile指令翻譯真正的Linux命令。Dockerfile有自己書(shū)寫(xiě)格式和支持的命令,Docker程序解決這些命令間的依賴關(guān)系,類似于Makefile。Docker程序?qū)⒆x取Dockerfile,根據(jù)指令生成定制的image。相比image這種黑盒子,Dockerfile這種顯而易見(jiàn)的腳本更容易被使用者接受,它明確的表明image是怎么產(chǎn)生的。有了Dockerfile,當(dāng)我們需要定制自己額外的需求時(shí),只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻煩。
基于centos7創(chuàng)建鏡像,首先拉取centos7鏡像,
docker pull centos7
制作鏡像的dockerfile如下所示:
FROM centos:7 MAINTAINER tcy tiancy@jovision.com RUN yum update -y && \ yum install crontabs iproutewget net-tools gcc automake autoconflibtool make gcc gcc-c++ zlib* zlib-devel -y RUN mkdir -p /home/mynginx COPY octmts /home/mynginx/octmts COPY tools /home/mynginx/tools WORKDIR /home/mynginx/octmts RUN chmod –R 755 * RUN sh install.sh octmts
編譯創(chuàng)建鏡像
docker build -t octmts -f dockerfile-octmts .
創(chuàng)建容器
程序文件和dockerfile放在同一目錄
創(chuàng)建容器+運(yùn)行
創(chuàng)建CentOS7容器,使用systemctl后臺(tái)運(yùn)行服務(wù)程序時(shí)遇到以下問(wèn)題:
Failed to get D-Bus connection
解決方案(此方案在主機(jī)是CentOS6.5系統(tǒng)下無(wú)效,暫時(shí)無(wú)法處理):
或者
四、CentOS6.5系統(tǒng)下使用私有倉(cāng)庫(kù)的兼容問(wèn)題
CentOS6.5系統(tǒng)下使用私有倉(cāng)庫(kù)時(shí)由于版本問(wèn)題導(dǎo)致pull私有鏡像失敗,Docker 1.7.1版本pull私有鏡像倉(cāng)庫(kù)報(bào)錯(cuò),V1,V2等。Docker 1.7版本和Docker CE的配置文件的位置不同:
Docker 1.7版本 /etc/sysconfig/docker
Docker CE版本使用 /etc/docker/daemon.json
使用docker 1.7版本如果要pulldocker registry v2或harbor里的鏡像,如果沒(méi)有配置CA證書(shū)的話,需要配置insecure-registry,并且需要將這個(gè)參數(shù)加到docker daemon的啟動(dòng)參數(shù)里。配置步驟:
1、Docker 1.7解決辦法
⑴ 配置DOCKER_OPTS參數(shù)并保存
[root@123 ] # vi /etc/sysconfig/docker other_args=DOCKER_CERT_PATH=/etc/docker ## add DOCKER_OPTS="--insecure-registry ip:port"
⑵ 修改啟動(dòng)項(xiàng)
[root@123 ] # vi /etc/init.d/docker ## 找到 start 函數(shù),在exec處增加剛配置的DOCKER_OPTS,參見(jiàn)下邊空行處 start() { if [ ! -x $exec ]; then if [ ! -e $exec ]; then echo "Docker executable $exec not found" else echo "You do not have permission to execute the Docker executable$exec" fi exit 5 fi check_for_cleanup if ! [ -f $pidfile ]; then prestart printf "Starting $prog:\t" echo "\n$(date)\n" >> $logfile ## addDOCKER_OPTS $exec -d $DOCKER_OPTS &>> $logfile & pid=$! touch $lockfile # waitup to 10 seconds for the pidfile to exist. see #https://github.com/docker/docker/issues/5359 tries=0 while [ ! -f $pidfile -a $tries -lt 10 ]; do sleep 1 tries=$((tries + 1)) done success echo else failure echo printf "$pidfile still exists...\n" exit 7 fi }
⑶ 重啟docker并驗(yàn)證pull功能
[root@123 ] # service docker restart
⑷其他方法
不這么費(fèi)事,直接修改啟動(dòng)項(xiàng),原理和結(jié)果都是相同的,然后重啟dockerdaemon
[root@123 ] # vi /etc/init.d/docker ## 找到exec,直接添加--insecure-registry ip:port prog="docker" exec="/usr/bin/$prog --insecure-registryip:port" pidfile="/var/run/$prog.pid" lockfile="/var/lock/subsys/$prog" logfile="/var/log/$prog"
2、Docker CE版本
檢查/etc/docker目錄下是否有daemon.json文件,如果沒(méi)有則創(chuàng)建,或者直接vi/etc/docker/daemon.json修改完在:wq也行。
[root@123 ] # vi /etc/docker/daemon.json ## add { "registry-mirrors": ["https://registry.docker-cn.com"], "insecure-registries" : ["ip:port","ip:port"] }
添加完成后重啟docker服務(wù)
service docker restart
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。