欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker使用Dockerfile來創(chuàng)建鏡像

 更新時(shí)間:2017年04月17日 15:06:18   作者:茶飲月  
本篇文章主要介紹了Docker使用Dockerfile來創(chuàng)建鏡像,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

本文學(xué)習(xí)Dcokerfile的基本命令,并且創(chuàng)建一個(gè)支持ssh服務(wù)的鏡像.

1.Dockerfile

1.1基本案例

dockerfile可以說是docker的描述符,該文件定義了docker鏡像的所能擁有哪些東西.基本格式如下:

第一行指定該鏡像基于的基礎(chǔ)鏡像(必須)
FROM java:8

維護(hù)者信息
MAINTAINER quding niudear@foxmail.com

鏡像操作指令
RUN echo $JAVA_HOME

啟動時(shí)操作的命令

CMD ./usr/sbin/nginx

該文件說明從Java8這個(gè)基礎(chǔ)鏡像創(chuàng)建一個(gè)新的鏡像,輸出Java路徑,啟動成功則啟動nginx服務(wù),這也是一個(gè)Dockerfile需要包含的操作步驟.

1.2指令詳解

1.FROM:格式為 FROM <image>或FROM<image>:<tag>第一條指令必須是FROM指令。并且,如果在同一個(gè)Dockerfile中創(chuàng)建多個(gè)鏡像時(shí),可以使用多個(gè)FROM指令(每個(gè)鏡像一次)。

2.MAINTAINER:格式為MAINTAIER,指定維護(hù)者信息。

3.RUN:格式為RUN <command>或者RUN [“executable”,“param1”,“param2”]。前者將在shell終端中運(yùn)行的命令,即/bin/sh–c;后者則使用exec執(zhí)行。指定使用其他終端可以通過第二種方式實(shí)現(xiàn),例如RUN[“/bin/bash”,“-c”,“echohello”]。每條RUN指令將在當(dāng)前鏡像基礎(chǔ)上執(zhí)行指定命令,并提交為新的鏡像。當(dāng)命令較長時(shí)可以使用\來換行。這實(shí)際上就是在容器構(gòu)建時(shí)需要執(zhí)行哪些指令,例如容器構(gòu)建時(shí)需要下拉代碼,但是默認(rèn)啟動的容器中是沒有Git指令的,就需要下載,可以執(zhí)行:RUN apt-get install -y git,然后RUN git clonexxxx

4.CMD:指定容器啟動后執(zhí)行的命令

命令格式為:

sh格式: CMD <命令>

exec格式:CMD [“可執(zhí)行文件”,”參數(shù)1”,”參數(shù)2”]

一般都是早就寫好的腳本或者啟動一個(gè)服務(wù),例如:CMD[“/run.sh”]。注意:如果Dockerfile中指定了多條命令,只有最后一條會被執(zhí)行。如果用戶啟動時(shí)候加了運(yùn)行的命令,則會覆蓋掉CMD指定的指令。

這里有一個(gè)問題,很多時(shí)候我們想要docker一直在后臺運(yùn)行,但是往往docker啟動后就停止.原因就在于此.

比如執(zhí)行CMD serice MySQL start,那么翻譯過來的話是CMD ["sh","-c","serice mysql start"],那么對于docker來說CMD主進(jìn)程為sh,那么sh執(zhí)行完該命令就結(jié)束,所以導(dǎo)致docker停止.所以要改成直接啟動文件形式CMD ["mysql","-g",""daemon off;],指定前臺運(yùn)行.

5.EXPOSE:告訴Docker服務(wù)端容器需要暴露的端口號,供互聯(lián)系統(tǒng)使用。在啟動容器時(shí)需要通過-P(注意是大寫),Docker主機(jī)會自動分配一個(gè)端口轉(zhuǎn)發(fā)到指定的端口;使用-p,則可以具體指定哪個(gè)本地端口映射過來。
例如:我在elasticsearch鏡像的Dockerfile中指定了暴露出9200和9300端口,我可以在Dockerfile中寫:EXPOSE 9200 9300

6.ENV:創(chuàng)建的時(shí)候給容器中加上個(gè)需要的環(huán)境變量。指定一個(gè)值,為后續(xù)的RUN指令服務(wù)

7.COPY:復(fù)制本地的文件或目錄到容器中。目標(biāo)路徑不存在時(shí),會自動創(chuàng)建。

8.ENTRYPOINT:配置容器啟動后執(zhí)行的命令,并且不可被docker run 提供的參數(shù)覆蓋。
每個(gè)Dockerfile中只能有一個(gè)ENTRYPOINT,當(dāng)指定多個(gè)ENTRYPOINT時(shí),只有最后一個(gè)生效

9.VOLUME:創(chuàng)建一個(gè)掛在點(diǎn),可以從本機(jī)或其他容器掛載的掛載點(diǎn)。意思就是從容器中暴露出一部分,和外界共享這塊東西,一般放數(shù)據(jù)庫的數(shù)據(jù)或者是代碼。在容器啟動運(yùn)行的時(shí)候,如果需要將volume暴露的東西和本地的一個(gè)文件夾進(jìn)行映射,想要通過本地文件直接訪問容器中暴露的部分,可以在運(yùn)行的時(shí)候進(jìn)行映射:

10.USER:指定運(yùn)行容器時(shí)的用戶名或者UID,后續(xù)的RUN也會使用指定的用戶。當(dāng)服務(wù)不需要管理員權(quán)限時(shí),可以通過該命令指定運(yùn)行用戶。并且可以在之前創(chuàng)建所需要的用戶。
要臨時(shí)獲取管理員權(quán)限的時(shí)候要使用gosu,不推薦使用sudo。如果不指定,容器默認(rèn)是root運(yùn)行。

11.WORKDIR:定義工作目錄,如果容器中沒有此目錄,會自動創(chuàng)建

創(chuàng)建指令docker build 路徑,該命令會讀取路徑下的Dockerfile文件和其他文件,然后發(fā)送給服務(wù)端,由服務(wù)端創(chuàng)建鏡像.

2.創(chuàng)建SSH服務(wù)鏡像

2.1準(zhǔn)備Java8環(huán)境

后續(xù)教程需要利用到Java8環(huán)境,因此先下載一個(gè)官方的Java8鏡像作為基礎(chǔ)鏡像.直接執(zhí)行如下命令.可以利用之前的教程,啟動容器查看下java路徑.

docker pull java:8

2.2編寫Dockerfile

ssh服務(wù)主要是openssh-server來提供,因此需要在容器中安裝該服務(wù).

Dockerfile:

#顯示該鏡像是基于java8鏡像
FROM java:8

#維護(hù)人信息
MAINTAINER quding niudear@foxmail.com
#更新源
RUN apt-get update
#安裝軟件
RUN apt-get install -y openssh-server

RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh

#取消pam限制
RUN sed -ri 's/session required  pam_loginuid.so/#session  required pam_loginuid.so/g' /etc/pam.d/sshd

#復(fù)制配置文件到相應(yīng)位置
COPY authorized_keys /root/.ssh/authorized_keys
COPY run.sh /run.sh

#賦予腳本權(quán)限
RUN chmod 755 /run.sh

#開放端口
EXPOSE 22

#設(shè)置啟動命令

CMD ["/run.sh"]

run.sh

#!/bin/bash
/usr/sbin/sshd -D

拷貝本機(jī)的id_ras

cat ~/.ssh/id_rsa.pub >authorized_keys
//用來免密的

執(zhí)行構(gòu)建

docker build -t sshd:java . 

構(gòu)建成功后使用docker images即可查看,然后像上篇一樣啟動容器,暴露出端口,再使用ssh連接,和一般Linux系統(tǒng)就沒什么差別了.

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker搭建logstash和使用方法詳解

    docker搭建logstash和使用方法詳解

    這篇文章主要介紹了docker搭建logstash和使用方法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • 詳解docker下的Mysql鏡像的使用方法

    詳解docker下的Mysql鏡像的使用方法

    本篇文章主要介紹了詳解docker下的Mysql鏡像的使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 刪除docker images中為none的鏡像操作

    刪除docker images中為none的鏡像操作

    這篇文章主要介紹了刪除docker images中為none的鏡像操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker部署mysql問題

    docker部署mysql問題

    這篇文章主要介紹了docker部署mysql問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Docker解決終端無法輸入中文的問題

    Docker解決終端無法輸入中文的問題

    這篇文章主要介紹了Docker解決終端無法輸入中文的問題,幫助大家更好的理解和學(xué)習(xí)docker的用法,感興趣的朋友可以了解下
    2020-08-08
  • 使用Docker Swarm搭建分布式爬蟲集群的方法示例

    使用Docker Swarm搭建分布式爬蟲集群的方法示例

    這篇文章主要介紹了使用Docker Swarm搭建分布式爬蟲集群的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Docker鏡像發(fā)布到Docker?Hub的實(shí)現(xiàn)方法

    Docker鏡像發(fā)布到Docker?Hub的實(shí)現(xiàn)方法

    本文主要介紹了Docker鏡像發(fā)布到Docker?Hub的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Docker在Windows環(huán)境的搭建和使用詳解

    Docker在Windows環(huán)境的搭建和使用詳解

    這篇文章主要介紹了Docker在Windows環(huán)境的搭建和使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Docker容器連接實(shí)現(xiàn)步驟解析

    Docker容器連接實(shí)現(xiàn)步驟解析

    這篇文章主要介紹了Docker容器連接實(shí)現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • docker構(gòu)建鏡像需使用的命令小結(jié)

    docker構(gòu)建鏡像需使用的命令小結(jié)

    Docker 構(gòu)建鏡像的命令主要分為兩類:Dockerfile 指令與 docker build 命令,這篇文章主要介紹了docker構(gòu)建鏡像需使用的命令,需要的朋友可以參考下
    2007-01-01

最新評論