(CN) Basic Ways to Use Docker

Docker

简介

Docker是一款基于Go语言实现的开源容器引擎,是一种轻量级虚拟化解决方案,为容器创建和管理提供了便捷。

docker与virtual machine对比

类目 虚拟机 容器
占用磁盘空间 大,以GB为单位 小,以MB为单位
启动速度 慢,分钟级别 快,秒级别
运行形态 运行于Hypervisor上 运行在宿主机内核 共享同一个Linux内核
虚拟化方式 硬件层面实现 操作系统层面 直接复用宿主机操作系统
并发性 单机十几个 成百上千个
性能 逊于宿主机 接近宿主机本地进程
隔离性 单机无法有效隔离 进程级别隔离

docker组件

Docker组件包含镜像(Image),容器(Container)和仓库(Repository)。其中,Docker镜像类似于虚拟机的镜像,用来创建Docker的容器。需要注意的是,镜像是一个只读模板,一个镜像可以包含一个完整的操作系统环境里面仅安装了Apache、MySQL或用户需要的其他应用程序;Docker容器是从镜像创建的应用实例,每一个容器都是相互隔离的,用以保证平台的安全;Docker仓库是集中存放镜像文件的场所,类似于代码仓库,最大的公开仓库是Docker Hub,其中存放了数量庞大的镜像供用户下载。

  • docker常见镜像操作:
docker search xxx	#查找镜像
docker pull xxx		#获取镜像,默认latest
docker image ls		#查看当前镜像
docker rmi $(docker image -q)	#删除所有镜像
  • docker容器常用操作:
docker ps -a		#查看所有容器
docker start/stop/rm CONTAINER	#开始、停止、删除某个容器
docker stop $(docker ps -aq)	#停止所有容器
docker rm $(docker ps -aq)		#删除所有容器
  • docker其他命令:
docker export/import		#导入、导出镜像
docker kill CONTAINER		#强行停止容器
docker rename CONTAINER		#重命名
docker push IMAGE			#推到远程仓库

docker run 具体参数及使用,查看docker官方文档

dockerfile

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随各种方法,命令和参数,产出为一个新的可以用于创建容器的镜像。

  • 部分使用规范:
指令 格式 作用
FROM FROM < image>: FROM 第一条指令必须为FROM指令。如果在同一个Dockerfile中创建多个镜像时,可以使用多个 FROM指令(每个镜像一次)
MAINTAINER MAINTAINER 指定维护者信息
RUN RUN 将在shell终端中运行命令,即 /bin/sh -c
RUN[“executable”,“param1”, “param2”] 使用exec执行,用于其它终端 如:RUN ["/bin/bash", “-c”, “echo hello”]
CMD 每个DockerFile只能有一个CMD命令 CMD [“executable”,“param1”,“param2”] 使用exec执行,推荐方式
CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用
CMD [“param1”,“param2”] 提供给ENTRYPOINT的默认参数
EXPOSE EXPOSE […] Docker服务端暴露的端口号
ENV ENV 指定一个环境变量,容器运行时保持
ADD ADD 复制到容器中的可以是Dockerfile所在目录的相对路径,也可以是URL,还可以是tar文件
COPY COPY 复制本地主机的到容器中的
ENTRYPOINT 只能有一个ENTRYPOINT命令 ENTRYPOINT[“executable”, “param1”, “param2”] 配置容器启动后执行的命令,不可被docker run 参数覆盖
ENTRYPOINT command param1 param2 (shell中执行)
VOLUME VOLUME ["/data"] 创建一个可以从本地主机或其他容器挂载的挂载点
USER USER daemon 指定运行容器时的用户名和UID,后续的RUN也使用指定用户
WORKDIR WORKDIR /path/to/workdir 为后续的RUN,CMD, ENTRYPOINT指定配置工作目录
ONBUILD ONBUILD [INSTRUCTION] 配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令

docker-compose

Docker-Compose负责实现对Docker容器集群的快速编排。Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。

Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

  • 常见操作:
docker compose up [OPTIONS] [SERVICE...]
docker compose down [OPTIONS] [SERVICE...]
Outis Yang
Outis Yang
2024 Undergraduate in Cyberspace Security

My research interests include Internet of Vehicles(IoV), Penetration Testing and Security research.