## docker分層
用來構建docker鏡像的文件

## 常用命令

~~~
CMD 指定容器啟動的時候運行的命令,只有最后一個會生效,可被替代
ENTRYPOINT 指定容器啟動的時候運行的命令,可以追加命令
ONBUILD 當構建一個被繼承Dockerfile,這時候會運行ONBUILD指令,觸發指令
COPY 將文件拷貝到鏡像中,類似ADD
ENV 設置環境變量
~~~
## 實戰測試
DockerHub中大多數鏡像都是從這個基礎鏡像來的,FROM scratch,然后配置需要的軟件和配置
示例構建一個centos
~~~
FROM centos
MAINTAINER wzj<wusir666666@163.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
~~~
列出鏡像變更歷史(構建步驟):docker history?鏡像id
?ENTRYPOINT?和?CMD區別
~~~
CMD 指定容器啟動的時候運行的命令,只有最后一個會生效,可被替代
ENTRYPOINT 指定容器啟動的時候運行的命令,可以追加命令
~~~
測試CMD
~~~
構建鏡像:
FROM centos
CMD ["ls", "-a"]
運行后顯示
E:\study\docker\dockerfile>docker run centos_test:v1
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
如果此時想要追加一個命令 -l
E:\study\docker\dockerfile>docker run centos_test:v1 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\": executable file not found in $PATH": unknown.
CMD情況下 -l 替換了 ["ls", "-a"],但是-l不是一個有效命令,所以報錯
~~~
測試ENTRYPOINT
~~~
構建鏡像:
FROM centos
ENTRYPOINT ["ls", "-a"]
運行后顯示
E:\study\docker\dockerfile>docker run centos_test:v1
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
如果此時想要追加一個命令 -l
E:\study\docker\dockerfile>docker run centos_test1:v1 -l
total 56
drwxr-xr-x 1 root root 4096 Nov 25 09:23 .
drwxr-xr-x 1 root root 4096 Nov 25 09:23 ..
-rwxr-xr-x 1 root root 0 Nov 25 09:23 .dockerenv
lrwxrwxrwx 1 root root 7 May 11 2019 bin -> usr/bin
drwxr-xr-x 5 root root 340 Nov 25 09:23 dev
drwxr-xr-x 1 root root 4096 Nov 25 09:23 etc
drwxr-xr-x 2 root root 4096 May 11 2019 home
lrwxrwxrwx 1 root root 7 May 11 2019 lib -> usr/lib
lrwxrwxrwx 1 root root 9 May 11 2019 lib64 -> usr/lib64
drwx------ 2 root root 4096 Aug 9 21:40 lost+found
drwxr-xr-x 2 root root 4096 May 11 2019 media
drwxr-xr-x 2 root root 4096 May 11 2019 mnt
drwxr-xr-x 2 root root 4096 May 11 2019 opt
dr-xr-xr-x 124 root root 0 Nov 25 09:23 proc
dr-xr-x--- 2 root root 4096 Aug 9 21:40 root
drwxr-xr-x 11 root root 4096 Aug 9 21:40 run
lrwxrwxrwx 1 root root 8 May 11 2019 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 May 11 2019 srv
dr-xr-xr-x 13 root root 0 Nov 25 09:23 sys
drwxrwxrwt 7 root root 4096 Aug 9 21:40 tmp
drwxr-xr-x 12 root root 4096 Aug 9 21:40 usr
drwxr-xr-x 20 root root 4096 Aug 9 21:40 var
~~~
- Python學習
- Python基礎
- Python初識
- 列表生成式,生成器,可迭代對象,迭代器詳解
- Python面向對象
- Python中的單例模式
- Python變量作用域、LEGB、閉包
- Python異常處理
- Python操作正則
- Python中的賦值與深淺拷貝
- Python自定義CLI三方庫
- Python并發編程
- Python之進程
- Python之線程
- Python之協程
- Python并發編程與IO模型
- Python網絡編程
- Python之socket網絡編程
- Django學習
- 反向解析
- Cookie和Session操作
- 文件上傳
- 緩存的配置和使用
- 信號
- FBV&&CBV&&中間件
- Django補充
- 用戶認證
- 分頁
- 自定義搜索組件
- Celery
- 搭建sentry平臺監控
- DRF學習
- drf概述
- Flask學習
- 項目拆分
- 三方模塊使用
- 爬蟲學習
- Http和Https區別
- 請求相關庫
- 解析相關庫
- 常見面試題
- 面試題
- 面試題解析
- 網絡原理
- 計算機網絡知識簡單介紹
- 詳解TCP三次握手、四次揮手及11種狀態
- 消息隊列和數據庫
- 消息隊列之RabbitMQ
- 數據庫之Redis
- 數據庫之初識MySQL
- 數據庫之MySQL進階
- 數據庫之MySQL補充
- 數據庫之Python操作MySQL
- Kafka常用命令
- Linux學習
- Linux基礎命令
- Git
- Git介紹
- Git基本配置及理論
- Git常用命令
- Docker
- Docker基本使用
- Docker常用命令
- Docker容器數據卷
- Dockerfile
- Docker網絡原理
- docker-compose
- Docker Swarm
- HTML
- CSS
- JS
- VUE