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。
长风破浪会有时,直挂云帆济沧海