Docker使用入门

简介

Docker 是一个开源的应用容器引擎,具有部署简易、沙箱隔离、轻量、可移植等特点,以管理应用程序相同的方式来管理基础架构,达到快速交付和部署代码的目的。

安装:https://docs.docker.com/engine/install/ubuntu/
阿里云镜像加速:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

Docker 架构

  • 镜像(Image):将软件环境打包好的模板,用来创建容器
  • 容器(Container):容器是镜像运行时的实体,可以被创建、启动、停止、删除等,容器与容器之间相互隔离
  • Docker daemon:Docker守护进程
  • Docker Client:Docker命令行工具,与Docker daemon进行通信并返回结果给用户
  • 仓库(Repository):用来保存镜像

常用命令

1、下载镜像

docker pull 镜像名:TAG
# Tag表示版本,有些镜像的版本显示latest,为最新版本

2、查看镜像

docker images
# 查看本地所有镜像

3、删除镜像

docker rmi -f 镜像ID或者镜像名:TAG
# 删除指定本地镜像
# -f 表示强制删除

4、运行

docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像ID或镜像名:TAG
# --name 指定容器名,可自定义,不指定自动命名
# -i 以交互模式运行容器
# -t 分配一个伪终端,即命令行,通常-it组合来使用
# -p 指定映射端口,讲主机端口映射到容器内的端口
# -d 后台运行容器
# -v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读

例-运行redis:docker run -p 6379:6379 --name redis -v /docker/redis/data:/data -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf

5、容器列表

docker ps -a -q
# docker ps查看正在运行的容器
# -a 查看所有容器(运行中、未运行)
# -q 只查看容器的ID

6、启动/停止容器

docker start 容器ID或容器名
docker stop 容器ID或容器名

7、删除容器

docker rm -f 容器ID或容器名
# -f 表示强制删除

8、查看日志

docker logs 容器ID或容器名

9、进入容器

docker exec -it 容器ID或者容器名 /bin/bash
# 进入正在运行的容器并且开启交互模式终端
# /bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。
# 也可以用docker exec在运行中的容器执行命令

Dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

Dockerfile常用指令

命令 用途
FROM 基础镜像文件
RUN 构建镜像阶段执行命令
ADD <src> <dest> 添加文件,从src目录复制文件到容器的dest,其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包
COPY 拷贝文件,和ADD命令类似,但不支持URL和压缩包
CMD 容器启动后执行命令
EXPOSE 声明容器在运行时对外提供的服务端口
WORKDIR 指定容器工作路径
ENV 指定环境变量
ENTRYPOINT 容器入口,CMD指令的目的一样,都是指定Docker容器启动时执行的命令,可多次设置,但只有最后一个有效
USER 用于设置启动镜像时的用户或者UID,写在该指令后的 RUN、CMD以及ENTRYPOINT指令都将使用该用户执行命令
VOLUME 指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该 目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持 久化数据的需求时可以在 Dockerfile中使用该指令。格式为: VOLUME["/data"]

RUN命令在image文件的构建阶段执行,执行结果都会打包进入image文件;CMD命令则是在容器启动后执行。另外,一个Dockerfile可以包含多个RUN命令,但是只能有一个CMD命令。
指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令。

构建镜像

在 Dockerfile 文件的存放目录下,执行构建动作

docker build -t 镜像名:TAG .
# 最后一个.表示上下文路径,该路径下的文件会被一起打包

Docker Compose

Docker Compose可以轻松、高效地管理容器,通过docker-compose.yml定义和运行多容器的Docker应用。

docker-compose.yml常用指令

  • image:指定镜像名或者镜像id
  • build:指定Dockerfile文件的路径
  • external_links:链接到docker-compose.yml外部的容器
  • ports:暴露端口信息
  • expose:暴露端口
  • volumes:卷挂载路径
  • environment:环境变量
  • net:设置网络模式

使用Docker Compose

  • docker-compose up:以依赖性顺序启动服务
  • docker-compose stop:按依赖关系顺序停止服务
posted @ 2021-07-07 21:48  及第  阅读(133)  评论(0编辑  收藏  举报