Docker常用命令
docker pull 镜像名<:tags> -从远程仓库拉取镜像
docker images -查看本地镜像
docker run 镜像名<:tags> - 创建容器,启动应用(本地若无镜像,则会先从远程仓库拉取)
docker ps [options] - 查看正在运行的容器 -a :显示所有的容器,包括未运行的。
docker rm [-f] 容器id - 删除容器 -f :强制删除,不论容器是否运行
docker rmi [-f] 镜像名<:tags> - 删除镜像 -f :强制删除,不论镜像是否在使用中
docker exec 在运行的容器中执行命令
语法
docker exec [OPTIONS] 容器ID 命令
OPTIONS说明:
- -d :分离模式: 在后台运行
- -i :即使没有附加也保持STDIN 打开
- -t :分配一个伪终端
示例
docker exec -it 855f7930476b /bin/bash
-it 采用交互方式执行命令
/bin/bash表示启动容器后启动bash。
PS:docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这样当你使用docker ps 查看启动的容器时,就会发现你刚刚创建的那个容器并不在已启动的容器队列中。
Dockerfile基本命令
FROM -基于基准镜像
FROM tomcat:8.5.46-jdk8-openjdk
LABEL & MAINTAINER -说明信息
MAINTAINER lixiaobai.com
LABEL version="1.0"
LABEL description="李小白的博客"
WORKDIR -切换工作目录 相当于进入容器内部的指定部署目录 如果工作目录不存在会自动创建 ,建议使用绝对路径
WORKDIR /usr/local/tomcat/webapps
ENV -设置环境变量
Dockerfile执行指令
- RUN:在build构建时执行命令
- ENTRYPOINT:容器启动时执行的命令
- CMD:容器启动后,执行默认的命令或参数
RUN
构建时运行
RUN yum install -y vim #shell命令格式
RUN ["yum","install","-y","vim"] #Exec命令格式
ENTRYPOIN
入口点,用于在器启动时执行的命令
Dockerfile中只有最后一个ENTRYPOINT会被执行
示例: ENTRYPOINT ["ps"] #推荐使用Exec命令格式,执行指令
CMD
用于设置默认执行的命令
Dockerfile中若出现多个CMD,则只有最后一个会被执行 ,若容器启动时附加指令,则CMD被忽略
示例:CMD ["ps","-ef"] #推荐使用Exec命令格式,执行指令
演示
下面是一个使用上述三个命令的综合示例:
FROM centos
RUN ["echo","image building"]
ENTRYPOINT ["ps"]
CMD ["-ef"]
1、首先进行镜像构建
docker build -t lixiaobai.com/docker_run .
执行结果如下图所示:
2、创建容器,启动应用
docker run lixiaobai.com/docker_run
执行结果:
从上图中可以看出ENTRYPOINT和CMD命令在容器启动时执行 ,通过执行 ps -ef 命令来查看当前所有的进程。
3、创建容器时附加指令或者参数
docker run lixiaobai.com/docker_run -aux
执行结果:
从上面的结果可以看出,在容器启动时附加指令-aux,则Dockerfile中的CMD命令会被忽略,这用我们通过CMD命令就可以在构建时灵活组合命令,适应不同的需求。