Docker概述和命令汇总

什么是docker?

Docker是一个容器化平台,它将应用程序及其所有依赖项以容器的形式打包在一起,以确保应用程序在任何环境(无论是开发环境、测试环境还是生产环境)中无缝运行。

Docker容器,将一个软件包在一个完整的文件系统中,其中包含运行所需的一切:代码、运行时、系统工具、系统库等任何可以安装在服务器上的东西。

它都将始终运行相同的程序,无论软件的环境如何。

什么是Docker镜像?

Docker镜像是Docker容器的源代码。换句话说,Docker镜像用于创建容器。使用build命令创建镜像,并且在使用run启动时它们将生成容器。镜像存储在Docker注册表中,registry.hub.docker.com因为它们可能变得非常大,镜像被设计为由其他镜像层组成,允许在通过网络传输镜像时发送最少量的数据。

什么是Docker容器?

  Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,在主机操作系统的用户空间中作为独立进程运行。Docker容器不依赖于任何特定的基础架构:它们可以在任何计算机,任何基础架构和任何云中运行。

什么是Docker Swarm?

  Docker Swarm Docker的群集管理工具。它将Docker主机池转变为一个虚拟Docker主机。Docker Swarm提供标准的Docker API,任何已经与Docker守护进程通信的工具都可以使用Swarm扩展到多个主机。

docker安装

移除原来docker

yum remove docker \

           docker-client \

           docker-client-latest \

           docker-common \

           docker-latest \

           docker-latest-logrotate \

           docker-logrotate \

               docker-engine

1.gcc安装gcc环境

yum -y install gcc

2.docker相关配置

yum install -y yum-utils

3.docker阿里云镜像地址

yum-config-manager \

    --add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新yum软件包索引

yum makecache fast

5.安装docker相关内容

yum install docker-ce docker-ce-cli containerd.io

6.启动docker

systemctl start docker

7.移除docker

删除软件

yum remove docker-ce docker-ce-cli containerd.io

删除资源

rm -rf /var/lib/docker

Docker常用指令

docker –help 查看docker帮助

attach  进入正在运行中的容器

build   通过Dockerfile定制镜像

commit 提交当前容器为新的镜像

cp     从容器中拷贝指定文件或者目录到主机中

create  创建一个新的容器 ,但不启动容器

events  查看Docker守护程序中正在进行的任务。

exec    在已存在的容器上运行命令

export  将容器的文件系统导出为tar归档文件

history  展示一个镜像形成历史

images  列出所有镜像

import  从压缩文件中导入内容以创建文件系统映像

info     显示系块相关信息

inspect  查看容器详细信息

kill      杀掉一个运行中的容器

load     从一个tar 包中加载 一个镜像【对应save】

login     注册或者 登录一个docker服务器

loginout  从 当前 docker  registry 退出

logs      输出当前容器日志信息

port     列出指定的容器的端口映射

pause    暂停容器

ps       列出容器列表

pull      从docker镜像源服务器拉取指定镜像或者库镜像

push     推送指定镜像或者 库 镜像至docker源服务器

restart   重启运行的容器

rm      移除一个 或多个容器

rmi      移除一个或多个镜像

run      创建一个指定的容器并运行一个命令

save      保存一个镜像为一个tar包

search    在docker hub中搜索镜像

start      启动容器

stop      停止容器

tag       给源中 镜像打标签

top       查看容器中运行的进程信息

unpause   在一个或多个容器中取消暂停所有进程

version   查看docker版本号

wait      截取容器停止时退出状态

Dockerfile中最常见的指令

 1FROM

    格式为FROM imageFROM image:tag,并且Dockerfile中第一条指令必须是FROM指令,且在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令。

 2. MAINTAINER

    格式为MAINTAINER user_name,指定维护者信息

 3. RUN

    格式RUN ["EXECUTABLE","PARAM1","PARAM2".....],使用exec执行,指定其他运行终端使用RUN["/bin/bash","-c","echo hello"]

 4. CMD

    CMD ["executable","param1","param2"],使用exec执行,这是推荐的方式。

    CMD用于指定容器启动时执行的命令,每个Dockerfile只能有一个CMD命令,多个CMD命令只执行最后一个。若容器启动时指定了运行的命令,则会覆盖掉CMD中指定的命令。

 5. EXPOSE

    格式为 EXPOSE port [port2,port3,...],例如EXPOSE 80这条指令告诉Docker服务器暴露80端口,供容器外部连接使用。
在启动容器的使用使用-PDocker会自动分配一个端口和转发指定的端口,使用-p可以具体指定使用哪个本地的端口来映射对外开放的端口。

6.  ENV

格式为:EVN key value 。用于指定环境变量,这些环境变量,后续可以被RUN指令使用,容器运行起来之后,也可以在容器中获取这些环境变量。
例如
ENV word hello
RUN echo $word

7.  ADD

    格式:ADD src dest
该命令将复制指定本地目录中的文件到容器中的dest中,src可以是是一个绝对路径,也可以是一个URL或一个tar文件,tar文件会自动解压为目录。

8.  COPY

    格式ENTRYPOINT ["executable","param1","param2"]

    用于配置容器启动后执行的命令,这些命令不能被docker run提供的参数覆盖。和CMD一样,每个Dockerfile中只能有一个ENTRYPOINT,当有多个时最后一个生效。

9.  VOLUME
格式为 VOLUME ["/data"]
作用是创建在本地主机或其他容器可以挂载的数据卷,用来存放数据。

10. USER

格式为:USER username
指定容器运行时的用户名或UID,后续的RUN也会使用指定的用户。要临时使用管理员权限可以使用sudo。在USER命令之前可以使用RUN命令创建需要的用户。
例如:RUN groupadd -r docker && useradd -r -g docker docker

11WORKDIR
格式: WORKDIR /path
为后续的RUN CMD ENTRYPOINT指定配置工作目录,可以使用多个WORKDIR指令,若后续指令用得是相对路径,则会基于之前的命令指定路径。

12ONBUILD
格式ONBUILD [INSTRUCTION]
该配置指定当所创建的镜像作为其他新建镜像的基础镜像时所执行的指令。
例如下面的Dockerfile创建了镜像A
ONBUILD ADD . /app
ONBUILD RUN python app.py

则基于镜像A创建新的镜像时,新的Dockerfile中使用from A 指定基镜像时,会自动执行ONBBUILD指令内容,等价于在新的要构建镜像的Dockerfile中增加了两条指令:
FROM A
ADD ./app
RUN python app.py

13. docker build
创建好Dockerfile之后,通过docker build命令来创建镜像,该命令首先会上传Dockerfile文件给Docker服务器端,服务器端将逐行执行Dockerfile中定义的指令。
通常建议放置Dockerfile的目录为空目录。另外可以在目录下创建.dockerignore文件,让Docker忽略路径下的文件和目录,这一点与Git中的配置很相似。通过 -t 指定镜像的标签信息,例如:docker build -t regenzm/first_image . ##"."指定的是Dockerfile所在的路径

COPY和ADD命令有什么区别

一般而言,虽然ADD并且COPY在功能上类似,但是首选COPY

那是因为它比ADD更易懂。COPY仅支持将本地文件复制到容器中,而ADD具有一些功能(如仅限本地的tar提取和远程URL支持),这些功能并不是很明显。因此,ADD的最佳用途是将本地tar文件自动提取到镜像中,如ADD rootfs.tar.xz /

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值