docker的入門實戰(zhàn)記錄

docker常用方法:

docker images 查看鏡像
docker ps 查看容器
docker ps -a 查看所有容器,包括沒有運行的
docker rm 刪除容器
docker rmi 刪除鏡像
docker build 新建鏡像
docker run 運行容器
docker stop 停止容器
docker logs 查看日志
docker load 導入鏡像
docker save 導出鏡像
docker commit 容器生成鏡像

Dockerfile的關鍵字解析:

# CommentINSTRUCTION arguments
FROM
基于哪個鏡像

RUN
安裝軟件用

MAINTAINER
鏡像創(chuàng)建者

CMD
container啟動時執(zhí)行的命令,但是一個Dockerfile中只能有一條CMD命令,多條則只執(zhí)行最后一條CMD.

CMD主要用于container時啟動指定的服務,當docker run command的命令匹配到CMD command時,會替換CMD執(zhí)行的命令。如:
Dockerfile:

CMD echo hello world
運行一下試試:

edwardsbean@ed-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd
hello world
一旦命令匹配:

edwardsbean@ed-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd echo hello edwardsbean
hello edwardsbean

ENTRYPOINT
container啟動時執(zhí)行的命令,但是一個Dockerfile中只能有一條ENTRYPOINT命令,如果多條,則只執(zhí)行最后一條

ENTRYPOINT沒有CMD的可替換特性

USER

使用哪個用戶跑container
如:

ENTRYPOINT ["memcached"]
USER daemon

EXPOSE
container內部服務開啟的端口。主機上要用還得在啟動container時,做host-container的端口映射:

docker run -d -p 127.0.0.1:33301:22 centos6-ssh
container ssh服務的22端口被映射到主機的33301端口

ENV
用來設置環(huán)境變量,比如:

ENV LANG en_US.UTF-8 ENV LC_ALL en_US.UTF-8

ADD

將文件<src>拷貝到container的文件系統(tǒng)對應的路徑<dest>
所有拷貝到container中的文件和文件夾權限為0755,uid和gid為0
如果文件是可識別的壓縮格式,則docker會幫忙解壓縮

如果要ADD本地文件,則本地文件必須在 docker build <PATH>,指定的<PATH>目錄下

如果要ADD遠程文件,則遠程文件必須在 docker build <PATH>,指定的<PATH>目錄下。比如:

docker build github.com/creack/docker-firefox
docker-firefox目錄下必須有Dockerfile和要ADD的文件

注意:使用docker build - < somefile方式進行build,是不能直接將本地文件ADD到container中。只能ADD url file.

ADD只有在build鏡像的時候運行一次,后面運行container的時候不會再重新加載了。

VOLUME

可以將本地文件夾或者其他container的文件夾掛載到container中。

WORKDIR

切換目錄用,可以多次切換(相當于cd命令),對RUN,CMD,ENTRYPOINT生效

ONBUILD

ONBUILD 指定的命令在構建鏡像時并不執(zhí)行,而是在它的子鏡像中執(zhí)行

實例dockerfile:

# Version: 1.0.0
# Create Time: 2019-01-22 09:04
# Author: chouchou
# Description: 在最新版本的ubuntu系統(tǒng)中安裝jdk,構建可執(zhí)行java的環(huán)境

FROM index.tenxcloud.com/tenxcloud/ubuntu:latest 
MAINTAINER chouchou "chouchou@sina.com"

# 將jdk安裝壓縮包解壓到/home/jdk1.8.0_51
ADD jdk-8u51-linux-x64.tar.gz /home/

# 安裝中文語言包
#RUN locale-gen zh_CN.UTF-8

# 設置java環(huán)境變量
ENV JAVA_HOME /home/jdk1.8.0_51
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin

# 設置語言環(huán)境變量
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh

###########腳本###########################
運行命令
docker build -t 自定義名稱 路徑
生成一個鏡像
docker images 查看當前所有鏡像
接下來用同樣的方式運行tomcat
###########腳本###########################

# Version: 1.0.0
# Create Time: 2019-01-22 11:04
# Author: chouchou

# 基于已經配置好的jdk1.8版本進行操作
FROM jdk:latest
MAINTAINERchouchou <chouchou@qq.com>

# 創(chuàng)建目錄
#RUN mkdir -p -m 777 /home

# 將context中的壓縮包遷移到容器中并解壓
ADD tomcat8.tar.gz /home/tomcat8/

# 暴露文件目錄
#VOLUME ["/home/docker/file/distfirstout", "/home/docker/file/input/D001"]
#VOLUME ["/app/tomcat8/webapps/"]

# 暴露網絡端口
EXPOSE 8881

# 啟動服務
ENTRYPOINT ["/home/tomcat8/apache-tomcat-8.0.24/bin/catalina.sh", "run"]

###########腳本###########################
執(zhí)行命令
docker build --no-cache=true -t tomcat8 路徑

docker run -d -p 8881:8080 --name=tomcat8 tomcat8

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Docker 學習目標: 掌握Docker基礎知識,能夠理解Docker鏡像與容器的概念 完成Docker安裝與啟...
    執(zhí)筆夢一場閱讀 3,513評論 2 10
  • 《Docker從入門到實踐》閱讀筆記 原書地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,641評論 1 39
  • Docker簡介Docker是一個由GO語言寫的程序運行的“容器”; 目前云服務的基石是操作系統(tǒng)級別的隔離,在同一...
    gakiww閱讀 648評論 0 0
  • 基本概念 鏡像Docker 鏡像就是一個只讀的模板,鏡像可以用來創(chuàng)建 Docker 容器 容器容器是從鏡像創(chuàng)建的運...
    巨子聯(lián)盟閱讀 7,800評論 0 3
  • 今天下午四點實驗室停電,但凡跟電有關的設備全部歇菜,讓我有時間翻了一本讀研時迷的自己神魂顛倒的一本書---送你一顆...
    小胡博士打怪獸閱讀 353評論 0 0

友情鏈接更多精彩內容