Docker常用命令

1、前置条件

ubuntu 20.04 一键安装dockcer

  curl -sSL https://get.daocloud.io/docker | sh

2、学习Docker

查看容器:

  docker ps 

查看所有容器:

  docker ps -a

进入容器的内部

  docker exec -it nginx_latest bash
  //exec:附着到运行着的容器内部
  //-it:-i 与 -t两个参数合并写法,-i -t 标志着为我们指定的容器创建了TTY并捕捉了STDIN
  //nginx_latest:是我们要进入的容器的名字。当然也可以写7934(ID)
  //bash:指定执行命令的shell。也可以写为:/bin/bash
————————————————
版权声明:本文为CSDN博主「IT利刃出鞘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/feiying0canglang/article/details/116203017

查看镜像

  docker images

创建一个镜像

 //构建镜像命令格式:
 docker build -t [镜像名]:[版本号][Dockerfile所在目录]
 //构建样例:
 docker build -t nginx:v0.2 /opt/dockerfile/nginx/
 //参数详解:
   -t                          //指定构建后的镜像信息,
   /opt/dockerfile/nginx/      //则代表Dockerfile存放位置,如果是当前目录,则用 .(点)表示

根据镜像创建一个容器

docker create -p 3000:80 --name exampleApp3000 yoyomooc/exampleapp
//docker create命令用于创建一个新的镜像。
//-p参数告诉 Docker 如何在容器中映射端口 80到主机操作系统。我指定容器内的端口80映射到主机操作系统中的端口3000。这与Docker中的EXPOSE命令相对应。
//--name 参数为容器指定了一个名字,这样一来,一旦容器的已经创建了。本例中的名称是 exampleApp3000,表示这个容器将响应于请求发送至主机操作系统中的端口3000。
//最后一个参数告诉Docker要使用哪个镜像作为新容器的模板。这个命令指定了yoyomooc/exampleapp镜像,这是docker build中使用的名称。

启动一个容器

  docker start 容器名称/id

删除容器

//首先需要停止所有的容器(只停止单个时把后面的变量改为image id即可)
 docker stop $(docker ps -a -q)
//删除所有的容器(只删除单个时把后面的变量改为image id即可)
  docker rm $(docker ps -a -q)

删除镜像

 //查看host中的镜像
  docker images
//删除指定id的镜像
  docker rmi <image id>
//想要删除untagged images,也就是那些id为的image的话可以用
  docker rmi $(docker images | grep "^" | awk "{print $3}")
//删除全部的images
  docker rmi $(docker images -q)

给镜像打tag :

  docker tag vis 仓库名:版本

推到镜像仓库:

  docker push 仓库名:版本

3、Dockerfile语法

FROM

格式为FROM <image>或FROM <image>:<tag>。
第一条指令必须为FROM指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)。

MAINTAINER

格式为MAINTAINER <name>,指定维护者信息。

RUN

格式为RUN <command>或RUN ["executable", "param1", "param2"]。
前者将在shell终端中运行命令,即/bin/sh -c;后者则使用exec执行。
指定使用其它终端可以通过第二种方式实现,例如RUN ["/bin/bash", "-c", "echo hello"]。
每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用\来换行
shell模式:类似于 /bin/bash -c command  例如:RUN echo hello
exec模式:类似于RUN['/bin/bash','-c','command'] 例如: RUN ['echo','hello']

EXPOSE

格式为EXPOSE [...]
告诉docker容器暴露的端口,供互联系统使用。在启动容器时需要通过-P,docker主机会自动分配 一个端口转发到指定的端口,使用-p,则可以具体指定哪个本地端口映射过来。
例子:EXPOSE 22 80 

ENV

指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持
例:ENV TZ "Asia/Shanghai" /ENV TERM xterm

ADD

格式为格式为ADD <src> <dest>。
该命令将复制指定的到容器中的。其中可以是dockerfile所在目录的一个相对路径(文件或目录),也可以是一个URL,还可以是一个tar文件(自动解压为目录)
例:
ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo
ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo

COPY

格式为COPY <src> <dest>。
复制本地主机的<src>(为Dockerfile所在目录的相对路径)到容器中的<dest>。
当使用本地目录为源目录时,推荐使用COPY。

ENTRYPOINT

两种格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2(shell中执行)。
配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖。

VOLUME

格式为VOLUME ["/data"]
创建一个挂载点,类似于容器启动时使用的-v选项,只不过这里不能指定挂载到宿主机的位置。默认为/var/lib/docker/vfs目录下。一般用来存放数据库和需要保持的数据。

USER

格式为 USER daemon
指定运行容器时的用户名或UID,后续的RUN也会使用指定用户。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户。要临时获取管理员权限时可以使用gosu。
groupadd -r postgres && useradd -r -g postgres postgres。要临时获取管理员权限可以使用gosu,而不推荐sudo。

WORKDIR

格式为WORKDIR /path/to/workdir
为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
示例:
WORKDIR /a
WORKDIR b
WORKDIR c
最终路径为/a/b/c

ONBUILD

格式为ONBUILD [INSTRUCTION]。
配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。
例如,Dockerfile使用如下的内容创建了镜像image-A。

[...]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
[...]

如果基于A创建新的镜像时,新的Dockerfile中使用FROM image-A指定基础镜像时,会自动执行ONBUILD指令内容,等价于在后面添加了两条指令。

FROM image-A
 
#Automatically run the following
ADD . /app/src
RUN /usr/local/bin/python-build --dir /app/src

使用ONBUILD指令的镜像,推荐在标签中注明,例如ruby:1.9-onbuild。

posted @ 2022-12-21 22:55  菜鸟小何  阅读(65)  评论(0编辑  收藏  举报