Dockerfile个人使用总结
Dockerfile的编写
FROM python # 从基础镜像开始构建
COPY . /app # 复制文件到镜像层
WORKDIR /app # 指定工作目录
EXPOSE 80 # 暴露端口供外部使用
RUN pip install -r requirements.txt # 构建镜像时的命令,一个RUN构建一层,因此构建时注意用&&来连接多条命令
CMD python news.py # 容器运行时的命令,多个CMD只会运行最后一个
构建容器
# docker必须在sudo权限下使用
$ docker build -f Dockerfile -t name:tag . # 注意末尾这个点表示当前目录别忘了
- -f指定Dockerfile文件,默认文件名就是Dockerfile,可以不写
- -t指定构建的镜像名和标签,不写tag(即
-t name
)则默认为name:latest
,tag是版本,name是镜像名 - 后面的
.
代表当前目录,意思是把当前目录上传到docker服务去构建。
启动容器
$ docker run -d --restart=always -p 80:80 -v ~/config:/app/config --name container image-name
- -d 表示后台运行
- --restart=always 表示自动重启(开机、出错容器退出等情况)
- -p 是将本地端口映射到内部端口,这样相当于把本地端口和内部端口连通了
- -v 是将本地文件(夹)映射到容器中,实现持久化存储,注意必须为绝对路径,因为相对路径是相对于docker容器管理那边的路径的,且这里是不允许有
./
之类的(可以有~来表示家目录) - --name 是容器名(run就是对镜像实例化创建一个容器,--name就是用来管理容器的名字)
- image-name 镜像的名字要放到最后
PS:如果要交互式与容器操作,需要添加使用
-it
参数
常用docker命令
注意镜像和容器是两个东西,类似类和对象的关系
$ docker images # 列出所有镜像
$ docker ps # 查看正在运行的容器
$ docker ps -a # 查看所有的容器(容器stop后依然存在,并没有删除)
$ docker run ... # 运行容器,见上
$ docker stop container # 停止容器,可以使用容器名或者id前3位,可用ps查看
$ docker rm container # 删除容器,可以使用容器名或者id前3位,可用ps查看
$ docker rmi image-id # 删除镜像,注意要删除完所有它的容器后才能删除镜像,可用images查看它的id前三位
$ docker system prune # 清理缓存,删除无用数据(包括已停止的容器,未使用的镜像等)
$ docker inspect container # 查看容器的详细信息(可以来看看mount挂载对没对)
$ docker logs container # 查看容器输出,可以使用容器名或者id前3位
标签:容器,name,--,简单,镜像,docker,Dockerfile
From: https://www.cnblogs.com/faf4r/p/17840819.html