常用命令
# 从远程仓库抽取镜像
docker pull 镜像名<:tags>
# 查看本地镜像
docker images
# 创建容器,启动应用
# 使用 -d 后台运行
# 与宿主机端口映射 ,使用选项 -p 宿主机端口:容器端口 如 : docker run -p 8000:8080 tomcat
docker run <-d> 镜像名<:tags>
# 查看正在运行中的镜像
docker ps
# 删除容器
docker rm <-f> 容器id
# 删除镜像
docker rmi <-f> 镜像名:<tags>
在容器中执行命令
# exec 在对应容器中执行命令
# -it 采用交互方式执行命令
docker exec [-it] 容器id 命令
# 实例:docker exec -it 0738ed2fe68b /bin/bash
# 查看容器的IP等环境信息
docker inspect 容器ID
Dockerfile 镜像描述文件
Dockerfile
是一个包含用于组合镜像的命令的文本文档 Docker通过读取Dockerfile
中的指令按步自动生成镜像
docker build -t 机构/镜像名<:tags> Dockerfile目录
Dockerfile 基础命令
FROM
- 基于基准镜像#制作基准镜像(基于centos:lastest) FROM centos #不依赖任何基准镜像base image FROM scratch
基于 采用openjdk8 + tomcat 9.0.22 的镜像
FROM tomcat: 9.0.22-jdk8-openjdk
尽量使用官方提供的Base Image
LABEL
&MAINTAINER
- 说明信息MAINTAINER SvenAugustus LABEL version = "1.0" LABEL description = "XXX"
WORKDIR
- 设置工作目录WORKDIR /usr/local #自动创建 WORKDIR /usr/local/newdir
尽量使用绝对路径
ADD
©
- 复制文件#复制到/root ADD hello /root #添加根目录并解压 ADD test.tar.gz /
ADD 除了复制,还具备添加远程文件功能
ENV
- 设置环境常量ENV JAVA_HOME /usr/local/openjdk8 RUN ${JAVA_HOME}/bin/java -jar test.jar
尽量使用环境常量,可提高程序维护性
EXPOSE
- 暴露容器端口将容器内部端口暴露给物理机
EXPOSE 8080
docker run -p 8000:8080 tomcat
Dockerfile执行指令
RUN & CMD & ENTRYPOINT
RUN
: 在Build构建时执行命令ENTRYPOINT
: 容器启动时执行的命令CMD
: 容器启动后执行默认的命令或参数
RUN
-构建时运行 RUN yum install -y vim #Shell 命令格式示例:
RUN ["yum","install","-y","vim"] #Exec命令格式
ENTRYPOINT
启动命令 ENTRYPOINT(入口点)用于在容器启动时执行命令Dockerfile
中只有最后一个ENTRYPOINT会被执行示例:
ENTRYPOINT ["ps"] #推荐使用Exec格式
CMD
默认命令 CMD用于设置默认执行的命令,如果docker run
携带了参数,那么 CMD 设置的参数命令就会被忽略 如Dockerfile
中出现多个CMD,则只有最后一个被执行 如容器启动时附加指令,则CMD被忽略示例:
CMD ["ps" , "-ef"] #推荐使用Exec格式
by Sven Augustus https://my.oschina.net/langxSpirit