【Docker】docker日常工作总结(Dockerfile语法、编写规则)_dockerfile demo(1)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

/myapp # ls
Dockerfile fun.py requirements.txt src.tar


### 🌙10、RUN :安装运行


**RUN命令是在容器中执行的;  
 在容器中执行requirements.txt,requirements.txt是通过COPY复制过来的;  
 RUN命令的工作目录一定是WORKDIR指定的工作目录。**


**🔥是在myapp目录下运行的**



> 
> **如果RUN运行的不止一条命令,不建议写多个RUN,可以拼接到一个RUN中,并且要分行展示**
> 
> 
> 


例如



RUN pip install -r requirements.txt &&
cat fun.py &&
ls /home



ubuntu@VM-24-12-ubuntu:~/docker$ sudo docker build -t jimi/myapp:v4 .
Sending build context to Docker daemon 14.85kB
Step 1/6 : FROM python:3.7-alpine
—> fe33630f7d7a
Step 2/6 : WORKDIR /myapp
—> Using cache
—> 301da95aced8
Step 3/6 : COPY . .
—> a4c046f8af01
Step 4/6 : ADD src.tar ./
—> b92b3193caae
Step 5/6 : RUN pip install -r requirements.txt && cat fun.py && ls /root
—> Running in a5302a40e091
Collecting cowpy==1.1.0
Downloading cowpy-1.1.0.tar.gz (14 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status ‘done’
Building wheels for collected packages: cowpy
Building wheel for cowpy (setup.py): started
Building wheel for cowpy (setup.py): finished with status ‘done’
Created wheel for cowpy: filename=cowpy-1.1.0-py3-none-any.whl size=10655 sha256=c2dfa4fefd1c5f80bc4cd440862a14a6c8f6a22aa33ca1ae4d68bf5d53c0bc34
Stored in directory: /root/.cache/pip/wheels/4d/db/fc/21216e4bfe68a6edd7dbfd3dc0dc34263a96cacbf1e0ee5c56
Successfully built cowpy
Installing collected packages: cowpy
Successfully installed cowpy-1.1.0
WARNING: Running pip as the ‘root’ user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[notice] A new release of pip is available: 23.0.1 -> 23.2.1
[notice] To update, run: pip install --upgrade pip
from cowpy import cow
print(cow.milk_random_cow(“hello,dev07”))

Removing intermediate container a5302a40e091
—> b88569957b21
Step 6/6 : CMD python fun.py
—> Running in 7ffc0de38d71
Removing intermediate container 7ffc0de38d71
—> 2c8479fc1671
Successfully built 2c8479fc1671
Successfully tagged jimi/myapp:v4


### 🌙11、ENV:指定环境变量



FROM python:3.8-alpine

LABEL maintaier=“kobe118@qq.com
LABEL description=“Dockerfile demo”

WORKDIR /myapp

COPY . .

ENV myuser=zhikong
myage=18

RUN pip install -r requirements.txt &&
cat fun.py &&
ls /home

CMD python fun.py


### 构建,创建镜像



zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker1$ sudo docker build -t kobe/myapp:v1 .
Sending build context to Docker daemon 5.632kB
Step 1/8 : FROM python:3.8-alpine
—> 926e859df334
Step 2/8 : LABEL maintaier=“kobe118@qq.com
—> Using cache
—> d77df09a3a66
Step 3/8 : LABEL description=“Dockerfile demo”
—> Using cache
—> 0ffecf31e2c8
Step 4/8 : WORKDIR /myapp
—> Using cache
—> 82c7391ed055
Step 5/8 : COPY . .
—> 6d9bb3cb0b8d
Step 6/8 : ENV myuser=zhikong myage=18
—> Running in 643df7e12cf0
Removing intermediate container 643df7e12cf0
—> 99b33e3abaad
Step 7/8 : RUN pip install -r requirements.txt && cat fun.py && ls /home
—> Running in 476df4d1e83f
Collecting cowpy==1.1.0
Downloading cowpy-1.1.0.tar.gz (14 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status ‘done’
Building wheels for collected packages: cowpy
Building wheel for cowpy (setup.py): started
Building wheel for cowpy (setup.py): finished with status ‘done’
Created wheel for cowpy: filename=cowpy-1.1.0-py3-none-any.whl size=10656 sha256=f19df94a3979606a4a78661667a031949e185b6eb90d10bc883452f7e133f971
Stored in directory: /root/.cache/pip/wheels/26/23/e0/6d551b2cf42dd0e359edf54fab392e64a3bfb0d197759ef03e
Successfully built cowpy
Installing collected packages: cowpy
Successfully installed cowpy-1.1.0
WARNING: Running pip as the ‘root’ user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.
You should consider upgrading via the ‘/usr/local/bin/python -m pip install --upgrade pip’ command.
from cowpy import cow
print(cow.milk_random_cow(“hello,dev07”))
Removing intermediate container 476df4d1e83f
—> 4f53a90478a3
Step 8/8 : CMD python fun.py
—> Running in eeeca0281985
Removing intermediate container eeeca0281985
—> c005edf44c7c
Successfully built c005edf44c7c
Successfully tagged kobe/myapp:v1


### 运行容器:



> 
> **sudo docker run -it kobe/myapp:v1 env**
> 
> 
> 



zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker1$ sudo docker run -it kobe/myapp:v1 env
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=85b6000b4128
TERM=xterm
LANG=C.UTF-8
GPG_KEY=E3FF2839C048B25C084DEBE9B26995E310250568
PYTHON_VERSION=3.8.13
PYTHON_PIP_VERSION=22.0.4
PYTHON_SETUPTOOLS_VERSION=57.5.0
PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/6ce3639da143c5d79b44f94b04080abf2531fd6e/public/get-pip.py
PYTHON_GET_PIP_SHA256=ba3ab8267d91fd41c58dbce08f76db99f747f716d85ce1865813842bb035524d
myuser=zhikong
myage=18
HOME=/root


**🔥注意:在命令中用-e指定的全局变量优先级高于Dockerfile指定的全局变量**


### 🌙12、EXPOSE:将我们暴露出来的端口添加到Dockerfile文件中



> 
> **格式:EXPOSE 8005**  
>  **运行容器只能指定-p 8005:80**  
>  **sudo docker run -it -p 8005:80 kobe/myapp:v1 /bin/sh**
> 
> 
> 



FROM python:3.8-alpine

LABEL maintaier=“kobe118@qq.com
LABEL description=“Dockerfile demo”

WORKDIR /myapp

COPY . .

ENV myuser=zhikong
myage=18

EXPOSE 8005

RUN pip install -r requirements.txt &&
cat fun.py &&
ls /home

CMD python fun.py


### 🌙13、VOLUME:指定数据卷



> 
> **VOLUME /myapp**
> 
> 
> 



FROM python:3.8-alpine

LABEL maintaier=“kobe118@qq.com
LABEL description=“Dockerfile demo”

WORKDIR /myapp

COPY . .

ENV myuser=zhikong
myage=18

EXPOSE 8005
VOLUME /myapp

RUN pip install -r requirements.txt &&
cat fun.py &&
ls /home

CMD python fun.py


**生成自定义镜像文件**



zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker1$ sudo docker build -t kobe/myapp:v1 .
Sending build context to Docker daemon 5.632kB
Step 1/10 : FROM python:3.8-alpine
—> 926e859df334
Step 2/10 : LABEL maintaier=“kobe118@qq.com
—> Using cache
—> d77df09a3a66
Step 3/10 : LABEL description=“Dockerfile demo”
—> Using cache
—> 0ffecf31e2c8
Step 4/10 : WORKDIR /myapp
—> Using cache
—> 82c7391ed055
Step 5/10 : COPY . .



**运行容器**



> 
> **运行命令中指定-v myapp\_v6:/myapp**  
>  **宿主机中的myapp\_v6目录与容器中的myapp目录相映射**
> 
> 
> 



zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker1$ sudo docker run -it -p 8005:80 -v myapp_v6:/myapp kobe/myapp:v1 /bin/sh
/myapp # ls
Dockerfile fun.py requirements.txt
/myapp #


**到宿主机中查看映射的数据卷:**



> 
> **sudo docker volume ls**
> 
> 
> 



zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker/docker_888$ sudo docker volume ls
DRIVER VOLUME NAME
local 4f47bec7346a7eb6c9aa649a106d04659510f03e8b4703c458fa9f2a42789433
local 5faa504dd145732e6d4e4df20029c68251ecc1caecd1ab852053d1ec36b3aec9
local 8c9f9fd267a96b952fe55c3003dfa465b4f03be8f03e4fad5ec8351c14571ea8
local 97fff49444e3bb0e0d645acb4e58dd4d858adf0602c0e1a148611b8fa2c41489
local 781caa242336789da568505678c8993526b06dcaae8838c44825daf8a715c54d
local 937eb5f474823192d093ee01a42fdf44e2ef0b4945583dc3b85f0c807d6dccbb
local 19386203fc92fe20cf84aa4bc25c59714af8ce0341192360a1fee3d8fcd90c69
local c70b1dddf7f1fc2081beb035466b2086a1f595eb8cd5bc3feddda83e3d74a741
local ce7599f23cc77c08cc3138a4acc6837211a3c3c011cf522fc9db29c6bc8ed6f9
local deb359cde637d5df17b745130ce7a0cbacc01337df9413523eb24f72e8753c30
local e579bcfef5dabdc55f7618e60fe0df72fd922e2f94759db2e988d0e70d00f76c
local myapp_v
local myapp_v1
local myapp_v6
local nnn
local v1


**查看数据卷的详细信息:**



> 
> **sudo docker inspect myapp\_v6**
> 
> 
> 



zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker/docker_888$ sudo docker inspect myapp_v6
[
{
“CreatedAt”: “2022-06-03T23:29:54+08:00”,
“Driver”: “local”,
“Labels”: null,
“Mountpoint”: “/var/lib/docker/volumes/myapp_v6/_data”,
“Name”: “myapp_v6”,
“Options”: null,
“Scope”: “local”
}
]


### 🌙🔥14、解决cat: /var/lib/docker/volumes/myapp\_v6/\_data: 权限不够的问题



> 
> **sudo docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh**  
>  **cd /var/lib/docker/volumes/数据卷名称/\_data**
> 
> 
> 



hilong@zhilong-virtual-machine:~/Desktop/shell_text/docker/docker_888$ cat /var/lib/docker/volumes/myapp_v6/_data
cat: /var/lib/docker/volumes/myapp_v6/_data: 权限不够
zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker/docker_888$ docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
Unable to find image ‘debian:latest’ locally
latest: Pulling from library/debian
e756f3fdd6a3: Already exists
Digest: sha256:3f1d6c17773a45c97bd8f158d665c9709d7b29ed7917ac934086ad96f92e4510
Status: Downloaded newer image for debian:latest

ls

bin boot cdrom dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin snap srv swapfile sys tmp usr var

cd /var/lib/docker/volumes/myapp_v6/_data

ls

Dockerfile fun.py requirements.txt

exit


### 🌙15、CMD:是运行容器的时候默认执行的命令


**CMD有两种格式**



> 
> a、shell格式(不推荐格式)  
>  **b、exec格式(exec格式):CMD [“python”,“fun.py”]**
> 
> 
> 



CMD [“python”,“fun.py”]



> 
> **Dockerfile文件中出现多个CMD,只会执行最后一个CMD,前面的都会被忽略**
> 
> 
> 



CMD [“python”,“fun.py”] 不执行
CMD [“ls”,“/”] 执行



> 
> **在运行一个容器的时候,如果在镜像名称后指定其他命令,会默认把Dockerfile中的CMD命令覆盖**
> 
> 
> 


**例如下面的命令会执行ls /**



zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker1$ sudo docker rmi -f kobe/myapp:v1 && sudo docker build -t kobe/myapp:v1 . && sudo docker run kobe/myapp:v1 ls /


**例如下面的命令会执行python文件 /**



FROM python:3.7-alpine

WORKDIR /myapp

COPY . .

ADD src.tar ./

EXPOSE 8005

VOLUME /myapp

RUN pip install -r requirements.txt &&
cat fun.py &&
ls /root

CMD [“python”,“fun.py”]



ubuntu@VM-24-12-ubuntu:~/docker$ sudo docker rmi -f jimi/myapp:v6 && sudo docker build -t jimi/myapp:v6 . && sudo docker run jimi/myapp:v6
Untagged: jimi/myapp:v6
Deleted: sha256:1d6534afc470e56c4ff6db65de1d2f844afb040f10786f0636d00519ca4391b9
Deleted: sha256:6c9d6d601f2a016937a5520f779248bee5c5701c62d87e6c1368a4fed8c4b675
Deleted: sha256:acc9d8a27c2d1f2ae6049392aa6efb7ac30a15c9945d9535aeb21be66b5f9703
Deleted: sha256:fd188eb32c77ad2058363a200277ad2049ef6130b85e0da1a0276b7aeec89ae0
Deleted: sha256:6acec67a2d3228b156ca5aee4876da8adc53ba7da198e55a5208e1baee92a84e
Deleted: sha256:3cda1fec94ae5981f69c5a14355c4a7f23039cfb1392ee89e4e3cde401f5825b
Sending build context to Docker daemon 14.85kB
Step 1/8 : FROM python:3.7-alpine
—> fe33630f7d7a
Step 2/8 : WORKDIR /myapp
—> Using cache
—> 301da95aced8
Step 3/8 : COPY . .
—> fc4133b9d21d
Step 4/8 : ADD src.tar ./
—> 77cec8366b62
Step 5/8 : EXPOSE 8005
—> Running in d178385bd07e
Removing intermediate container d178385bd07e
—> 76353f26a2d4
Step 6/8 : VOLUME /myapp
—> Running in 0c7fab0dcd54
Removing intermediate container 0c7fab0dcd54
—> be21f26c5698
Step 7/8 : RUN pip install -r requirements.txt && cat fun.py && ls /root
—> Running in e70f0ebb9a9e
Collecting cowpy==1.1.0
Downloading cowpy-1.1.0.tar.gz (14 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status ‘done’
Building wheels for collected packages: cowpy
Building wheel for cowpy (setup.py): started
Building wheel for cowpy (setup.py): finished with status ‘done’
Created wheel for cowpy: filename=cowpy-1.1.0-py3-none-any.whl size=10655 sha256=4c237d0d4da493f65500b3b95ad5481a3f35e9cdece0ea7e10288b3baa9012eb
Stored in directory: /root/.cache/pip/wheels/4d/db/fc/21216e4bfe68a6edd7dbfd3dc0dc34263a96cacbf1e0ee5c56
Successfully built cowpy
Installing collected packages: cowpy
Successfully installed cowpy-1.1.0
WARNING: Running pip as the ‘root’ user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[notice] A new release of pip is available: 23.0.1 -> 23.2.1
[notice] To update, run: pip install --upgrade pip
from cowpy import cow
print(cow.milk_random_cow(“hello,dev07”))

Removing intermediate container e70f0ebb9a9e
—> ed928823ea34
Step 8/8 : CMD [“python”,“fun.py”]
—> Running in b75850a97db1
Removing intermediate container b75850a97db1
—> 9d02aa91727e
Successfully built 9d02aa91727e
Successfully tagged jimi/myapp:v6


< hello,dev07 >

    o    ,-^-.
     o   !oYo!
      o /./=\.\______
           ## )\/\
            ||-----w||
            ||      ||

           Cowth Vader

### 🌙16、ENTRYPOINT



> 
> **Dockerfile文件中出现多个ENTRYPOINT,只会执行最后一个ENTRYPOINT,前面的都会被忽略**  
>  **在运行一个容器的时候,如果在镜像名称后指定其他命令,不会将Dockerfile中的ENTRYPOINT的命令覆盖**
> 
> 
> 



> 
> **1、ENTRYPOINT可以和CMD一起使用**
> 
> 
> 



> 
> **2、CMD中指定的参数会作为NETRYPOINT的默认参数;相当于cat /etc/passwd,/etc/hosts,例如**
> 
> 
> 



ENTRYPOINT [“cat”,“/etc/passwd”]
CMD [“/etc/hosts”]



> 
> **3、如果在运行一个容器的时候,如果在镜像名称后指定其他命令,不会将Dockerfile中的ENTRYPOINT的命令覆盖,会将CMD的命令覆盖,并且将指定的其他命令作为ENTRYPOINT的参数**
> 
> 
> 


### 🌙17、上传镜像到docker hub



> 
> a、首选有docker hub账号  
>  b、保证镜像名称前缀和docker hub的用户名保持一致,如果不一致需要修改镜像名称
> 
> 
> 



sudo docker tag kobe/myapp:v1 zhilongya/myapp:v1



> 
> c、登录docker hub
> 
> 
> 



sudo docker login



> 
> d、输入用户名和密码  
>  f、上传镜像到docker hub
> 
> 
> 



zhilong@zhilong-virtual-machine:~/Desktop/shell_text/docker1$ sudo docker push zhilongya/myapp:v1
The push refers to repository [docker.io/zhilongya/myapp]
b1789c140df9: Pushed
41de4fa5ab4b: Pushed
4a1f4cf2b877: Pushed
4531d365dde0: Mounted from library/python
9e567d1bb30a: Mounted from library/python
56bb29f4ee33: Mounted from library/python
09c126bb3acd: Mounted from library/python
24302eb7d908: Mounted from library/python
v1: digest: sha256:ca0ccb61b6a0c424b62c4e5e5d6c131b612dc7196ca7b4b25e843fde9c029c8b size: 1994


![在这里插入图片描述](https://img-blog.csdnimg.cn/6c130f8c562c44969a45e0db719c8708.png)


![img](https://img-blog.csdnimg.cn/img_convert/c62edc5a1b470cd63e8f62b7f5a200e9.png)
![img](https://img-blog.csdnimg.cn/img_convert/70a1ec95fbdb0dcbee23c7b024f47439.png)
![img](https://img-blog.csdnimg.cn/img_convert/15d610394b566a429e2a83a68888050b.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

nted from library/python 
56bb29f4ee33: Mounted from library/python 
09c126bb3acd: Mounted from library/python 
24302eb7d908: Mounted from library/python 
v1: digest: sha256:ca0ccb61b6a0c424b62c4e5e5d6c131b612dc7196ca7b4b25e843fde9c029c8b size: 1994

在这里插入图片描述

[外链图片转存中…(img-VPEF0zB8-1714985608732)]
[外链图片转存中…(img-wYP3HVqs-1714985608733)]
[外链图片转存中…(img-VBqPD6R2-1714985608733)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值