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 .

执行结果如下图所示:

docker image查询镜像是否存在 shell docker查看镜像dockerfile_命令

2、创建容器,启动应用

docker run lixiaobai.com/docker_run

执行结果:

docker image查询镜像是否存在 shell docker查看镜像dockerfile_命令_02

从上图中可以看出ENTRYPOINT和CMD命令在容器启动时执行 ,通过执行 ps -ef 命令来查看当前所有的进程。

3、创建容器时附加指令或者参数

docker run lixiaobai.com/docker_run -aux

执行结果:

docker image查询镜像是否存在 shell docker查看镜像dockerfile_bash_03

从上面的结果可以看出,在容器启动时附加指令-aux,则Dockerfile中的CMD命令会被忽略,这用我们通过CMD命令就可以在构建时灵活组合命令,适应不同的需求。