docker

本文介绍了Docker的三大核心概念——镜像、容器和仓库,以及Docker的安装和使用方法,包括镜像的搜索、拉取、查看和删除,容器的创建、运行、查看、停止和删除。此外,还详细阐述了Dockerfile的指令和DockerCompose的使用,以及容器的网络操作、数据卷管理和日志查看等常用功能。
摘要由CSDN通过智能技术生成

一、Docker的三个基本概念

  1. 镜像(Image)

镜像是Docker的核心概念,可以理解为一个虚拟机的快照,用来部署应用程序。镜像由多层文件系统组成,每一层都是一个只读的文件系统,每一层都可以添加、修改或删除文件。

  1. 容器(Container)

容器是基于镜像创建的一个运行环境,可以理解为一个轻量级的虚拟机。容器提供了一个独立的、可隔离的运行环境,它与宿主机共享操作系统内核。

  1. 仓库(Registry)

仓库是存放镜像的地方,Docker Hub是Docker官方提供的公共仓库。

二、Docker的使用方法

  1. 安装Docker

在Linux系统中,可以使用以下命令安装Docker:

$ sudo apt-get update
$ sudo apt-get install docker-ce
  1. 镜像操作
  • 搜索镜像

使用以下命令搜索Docker Hub上的镜像:

$ docker search image_name
  • 拉取镜像

拉取镜像到本地仓库:

$ docker pull image_name
  • 查看本地镜像
$ docker images
  • 删除镜像
$ docker rmi image_name
  1. 容器操作
  • 使用镜像创建容器并运行
$ docker run image_name

运行参数:

-d:在后台运行容器并输出容器 ID。
-i:以交互模式运行容器,通常与 -t 一起使用。 -it
-t:为容器分配一个伪终端。
--name:为容器指定一个名称。
-p:将主机端口映射到容器端口。   -p 宿主机端口:容器端口
-v:将主机目录或文件挂载到容器中。 -v 宿主机文件地址:容器内部文件地址 
-e: --env=[], 指定环境变量,容器中可以使用该环境变量
--restart="no", 指定容器停止后的重启策略:
	no:容器退出时不重启
	on-failure:容器故障退出(返回值非零)时重启
	always:容器退出时总是重启
--rm:容器停止后自动删除。
  • 查看运行中的容器
$ docker ps
  • 查看所有容器(包括停止和暂挂 )
$ docker ps -a
  • 停止容器
$ docker stop container_name  # 容器名或容器ID
  • 启动容器
$ docker start container_name  # 容器名或容器ID
  • 删除容器
$ docker rm container_name  # 容器名或容器ID
  1. Dockerfile操作

Dockerfile是一个文本文件,用来定义镜像的构建过程。常用的指令包括FROM、RUN、COPY、ENTRYPOINT等。

Dockerfile制作镜像示例:

FROM ubuntu:latest   # 镜像来源
RUN apt-get update && apt-get install -y nginx   # 容器启动执行命令 
COPY index.html /var/www/html/    # 
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
Dockerfile 命令 介绍
FROM :
FROM :# 固定第一行命令 ,表示来源基础镜像 
RUN :
RUN : # 镜像构建时执行命令  (docker build)

注意点:
dockerfile是每层都会建立一个镜像为下层命令使用,所以减少中间缓存镜像占用,应尽量较少 层数
执行 RUN命令可采用以下方式(&&命令连接),多行命令 合并执行

FROM centos
RUN yum -y install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz
COPY:
COPY: # 复制指令,从上下文目录中复制文件或者目录到容器里指定路径。 上下文目录是指Dockerfile 文件的当前目录
ADD:
ADD:  # 与COPY类似,ADD 可以进行文件解压
CMD:
CMD:  # 容器 运行时运行改命令(docker run)
	  # CMD 可以被  docker run 中的命令覆盖 ,多个CMD命令只有最后一个CMD会生效 
ENTRYPOINT:
ENTRYPOINT:容器运行时执行改 命令 ,CMD命令行将作为参数会传递给 ENTRYPOINT 指令指定的程序。
但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。

优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。

搭配 CMD 命令使用:一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参
示例:

FROM nginx
ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参 
ENV:
ENV:  #  设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。
ARG:

构建参数,与 ENV 作用一致。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。

构建命令 docker build 中可以用 --build-arg <参数名>=<值> 来覆盖。

VOLUME:

定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

VOLUME:

指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。

  1. Docker Compose操作

Docker Compose是一个定义和运行多个容器的工具。使用Docker Compose可以定义一组相互关联的容器,然后一次性启动、停止和管理它们。

以下是一个简单的Docker Compose示例:

version: '3'
services:
  web:
    build: .
    ports:
      - "80:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password

启动Docker Compose:

$ docker-compose up -d

停止容器 :

docker-compose down 

重启容器

docker-compose restart nginx # 指定了容器名,不知道 则启动docker-compose 文件里的 所有容器 

三、Docker的常用操作

  1. 容器网络操作

创建一个自定义网络:

$ docker network create network_name

将容器连接到网络:

$ docker run --network network_name image_name
  1. 容器数据卷操作

创建一个数据卷:

$ docker volume create volume_name

容器挂载到数据卷:

$ docker run -v volume_name:/path/to/mount image_name
  1. 容器日志操作

查看容器的日志:

$ docker logs container_name

将容器的日志输出到文件:

$ docker logs container_name > log_file
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值