溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker二所鏡像制作

發(fā)布時(shí)間:2020-08-09 09:30:27 來(lái)源:ITPUB博客 閱讀:200 作者:mi_zy 欄目:MySQL數(shù)據(jù)庫(kù)

Docker二所鏡像制作

1、dockerfile 里不能有交互式命令。

     FROM centos:6.9  加載鏡像

     RUN curl -o /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-6.repo   //base源優(yōu)化

      RUN curl -o /etc/yum.repos.d/epel.repo   http://mirrors.aliyun.com/repo/epel-6.repo   

// EPEL (Extra Packages for Enterprise Linux)(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社區(qū)打造,為 RHEL 及衍生發(fā)行版如 CentOS、Scientific Linux 等提供高質(zhì)量軟件包的項(xiàng)目.

     RUN  (類似docker run的操作)啟動(dòng)一個(gè)臨時(shí)容器,產(chǎn)生文件變化,提交臨時(shí)鏡像,保留變化,刪除臨時(shí)容器。

      RUN  基于上面的臨時(shí)鏡像,啟動(dòng)一個(gè)臨時(shí)容器,產(chǎn)生文件變化,再次 提交臨時(shí)鏡像,保留變化,刪除臨時(shí)容器。直到最有一個(gè)臨時(shí)鏡像保留下來(lái)。

     RUN echo "192.169.11.2  mirrors.aliyun.com" >>/etc/hosts    劫持host,每次啟動(dòng)容器,hosts都會(huì)被自動(dòng)改為容器名,要生效,這個(gè)RUN必須是 最后一條RUN,或把所有RUN通過(guò)&&  \ 連成一條命令,這樣作為最后一個(gè)臨時(shí)鏡像,會(huì)保留下來(lái)。

      ADD run.sh /run.sh    //這個(gè)不會(huì)啟動(dòng)臨時(shí)容器,所以不會(huì)改hosts。 如果是URL或壓縮包,會(huì)自動(dòng)下載或自動(dòng)解壓

      RUN 775 /run.sh

      CMD ["/bin/bash","/run.sh"]

2、docker image prune   刪除沒(méi)有名字也沒(méi)有版本的鏡像,怎么會(huì)產(chǎn)生名字和TAG為<none>的鏡像?<----docker image rm -f  正在運(yùn)行的鏡像;或dockerfile構(gòu)建一半的時(shí)候Ctrl+c也會(huì)產(chǎn)生。

3、 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7

        -v:主機(jī)和容器的目錄映射關(guān)系,":"前為主機(jī)目錄,之后為容器目錄

        通過(guò)ENV環(huán)境變量 MYSQL_ROOT_PASSWORD,來(lái)設(shè)置MySQL初始密碼,在 docker run 通過(guò) -e MYSQL_ROOT_PASSWORD=111111可以設(shè)定該容器的運(yùn)行時(shí)密碼。

4、使用ADD,tar包下載到本地,使用ADD自動(dòng)解壓加到鏡像中,copy則不會(huì)解壓。

5、ADD yum install openssh-server -y   //在腳本service sshd start,

     ssh root@192.168.1.1  -p 22   //因?yàn)?沒(méi)有密碼還是不能通過(guò)ssh登錄,需要

     echo "123456" | passwd --stdin root   // 更新用戶密碼信息,適用于shell腳本,非交互式設(shè)置root密碼,或使用腳本變量$1用戶設(shè)置密碼。失敗 問(wèn)題原因之一就是出在了密碼中有"!"。繼續(xù)測(cè)試echo命令和"!",知道了"!"在echo中是有不同意義的,如果要輸出"!",就需要"\"來(lái)轉(zhuǎn)譯。

6、tail -F     等同于--follow=name  --retry,根據(jù)文件名進(jìn)行追蹤,并 保持重試,即該文件被刪除或改名后,如果再次創(chuàng)建相同的文件名,會(huì)繼續(xù)追蹤

7、docker run 指定的參數(shù)會(huì)當(dāng)成 ENTRYPOINT的參數(shù),而 CMD會(huì)被替換。 ENTRYPOINT:  啟動(dòng)容器時(shí)執(zhí)行的Shell命令,同CMD類似,只是由ENTRYPOINT啟動(dòng)的程序 不會(huì)被docker run命令行指定的參數(shù)所覆蓋 ,而且, 這些命令行參數(shù)會(huì)被當(dāng)作參數(shù)傳遞給ENTRYPOINT指定指定的程序

8、配置文件插入內(nèi)容:echo "$1" >>/etc/hosts    、、// $1是 docker run 參數(shù)

9、docker container top 容器ID   、//容器的TOP命令,查看運(yùn)行的程序、服務(wù)

10、利用數(shù)據(jù)卷對(duì)數(shù)據(jù)進(jìn)行備份、恢復(fù)和遷移: http://www.dockerinfo.net/%e6%95%b0%e6%8d%ae%e5%8d%b7volumes

11、docker服務(wù)默認(rèn)創(chuàng)建一個(gè)docker0網(wǎng)橋(其上有一個(gè)docker0內(nèi)部接口),它在內(nèi)核層連通了其它的物理或虛擬網(wǎng)卡,這就將所有容器和本地主機(jī)都放到同一個(gè)物理網(wǎng)絡(luò)。brctl show(apt-get isntall bridge-utils)查看網(wǎng)橋和端口連接信息,其中STP enabled為no,川大使用須注意網(wǎng)絡(luò)環(huán)路問(wèn)題!

12、docker容器開啟多個(gè)服務(wù),最簡(jiǎn)單的就是把多個(gè)命令放到一個(gè)啟動(dòng)腳本里面,另外就是使用進(jìn)程管理工具,例如使用supervisor來(lái)管理容器中的多個(gè)進(jìn)程,dockerfile中CMD ["/usr/bin/supervisord"],通過(guò)修改/etc/supervisor/conf.d/supervisord.conf配置文件啟動(dòng)多個(gè)服務(wù);

Docker二所鏡像制作

13、查找文件并拷貝到一個(gè)目錄下:find /home/ -name "*.rpm"  -tpye f | xargs -i mv {} myfold   // -i 或者是-I,將xargs的每項(xiàng)名稱,一般是一行一行賦值給{}。

14、sz/rz 是基于ZModem傳輸協(xié)議的命令。對(duì)傳輸?shù)臄?shù)據(jù)會(huì)進(jìn)行核查,并且有很好的傳輸性能。使用起來(lái)更是非常方便,但前提是window端需要有能夠支持ZModem的telnet或者SSH客戶端,例如secureCRT。

yum -y install lrzsz

15、

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI