Docker是一种快速构建、运行、管理应用的工具。
官网:www.docker.com
官方文档:docs.docker.com/guides
1 镜像与容器常用命令
当利用Docker安装应用时,Docker会自动搜索井下载应用镜像(Image)。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(Container)。
镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库——Docker Hub。
镜像仓库命令:
# 从镜像仓库下载镜像到本地
docker pull
# 将本地镜像推送到镜像仓库
docker push
容器命令:
# 创建并运行一个容器
docker run
-d # 让容器在后台运行
--name YOURNAME # 给容器起名,必须唯一
-p 3306:3306 # 设置端口映射,**宿主机**端口映射到容器内端口
-e KEY=VALUE # 设置环境变量
repository:[tag] # repository为镜像名,tag为镜像版本(可省略,默认为latest)
# 停止容器内的镜像(进程)
docker stop
# 启动容器内停止的镜像
docker start
# 查看当前容器中的运行状态
docker ps
# 删除容器
docker rm
# 查看容器运行日志
docker logs
# 在容器内部执行命令
docker exec
# 查看容器详情
docker inspect
本地镜像命令:
# 查看所有本地镜像
docker images
# 删除本地镜像
docker rmi
# 自定义定义本地镜像
docker build
# 将本地镜像打包成压缩文件
docker save
# 加载打包成压缩文件后的本地镜像
docker load
2 数据卷挂载
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。
常用命令:
# 创建数据卷
docker volume create
# 查看所有数据卷
docker volume ls
# 删除指定数据卷
docker volume rm
# 查看某个数据卷的详情
docker volume inspect
# 清除数据卷
docker volumme prune
在执行docker run
时,可使用-v 数据卷:容器内目录
完成数据卷挂载。
当创建容器时,若挂载了数据卷且数据卷不存在,则会自动创建数据卷。
3 本地目录挂载
在执行docker run
时,可使用-v 本地目录:容器内目录
完成本地目录挂载。
本地目录必须以“/
”或“./
”开头,若直接以名称开头,会被识别为数据卷而非本地目录
4 Dockerfile构建镜像
镜像是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程即为将上述文件打包的过程。
镜像结构:
- 入口 (EntryPoint):镜像运行入口,一般是程序启动的脚本和参数
- 层(Layer):添加安装包、依赖、配置等每次操作都形成新的一层
- 基础镜像(Baselmage):应用依赖的系统函数库、环境、配置、文件等
Dockerfile是一个包含一系列指令(Instruction)的文本文件,用于说明要执行什么操作来构建镜像。将来Docker可以根据Dockeifile帮助构建镜像。
官方文档:docs.docker.com/engine/reference/builder
常见指令如下:
FROM
:指定基础镜像。- 【例】
FROM centos:6
- 【例】
ENV
:设置环境变量,可在后面指令使用。- 【例】
ENV key value
- 【例】
COPY
:拷贝本地文件到镜像的指定目录。- 【例】
COPY ./jrell.tar.gz /tmp
- 【例】
RUN
:执行Linux的shel1命令,一般是安装过程的命令。- 【例】
RUN tar -zxvf /tmp/jrell.tar.gz && EXPORTS path=/tmp/jrell:$path
- 【例】
EXPOSE
:指定容器运行时监听的端口,是给镜像使用者看的。- 【例】
EXPOSE 8080
- 【例】
ENTRYPOINT
:镜像中应用的启动命令,容器运行时调用。- 【例】
ENTRYPOINT java -jar xx.jar
- 【例】
可以基于Ubuntu基础镜像,利用Dockerfile描述镜像结构:
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录、容器内时区
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \ && tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 入口,java项目的启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]
亦可直接基于JDK为基础镜像,省略前面的步骤:
# 基础镜像
FROM openjdk:11.0-jre-buster
# 拷贝jar包
COPY docker-demo.jar /app.jar
#入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
编写好dockerfile后,可利用如下命令来构建镜像:
docker build -t myImage:1.0 .
-t
:给镜像起名,格式依然同docker run
.
:指定在当前目录构建(与dockerfile同目录)
5 容器网络互联
默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上
加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作命令如下:
docker network create
:创建一个网络docker network ls
:查看所有网络docker network rm
:删除指定网络docker network prune
:清除未使用的网络docker network connect
:使指定容器连接加入某网络docker network disconnect
:使指定容器连接离开某网络docker network inspect
:查看网络详细信息
6 Docker Compose
Docker Compose通过一个单独的docker-compose.yml
模板文件(YAML格式)来定义一组相关联的应用容器,帮助实现多个相互关联的Docker容器的快速部署。
【例】如下所示,一个项目(Project)分为若干服务(Service)
version: "3.8"
services:
containerA:
image: A
container_name: A
ports:
- "11:11"
containerB:
image: B
container_name: B
ports:
- "22:22"
containerC:
image: C
container_name: C
ports:
- "33:33"
docker compose的命令格式如下:
docker compose [Options] [Commands]
Options
:-f
:指定compose文件的路径和名称-p
:指定project名称
Commands
:up
:创建并启动所有service容器down
:停止并移除所有容器、网络ps
:列出所有启动的容器logs
:查看指定容器的日志stop
:停止容器start
:启动容器restart
:重启容器top
:查看运行的进程exec
:在指定的运行中容器中执行命令
CBD Gummies 2025: Best CBD Gummies for Pain Anxiety & Sleep
thca disposable area 52
thc tinctures area 52
indica gummies area 52
hybrid gummies area 52
thc gummies for pain area 52
liquid diamonds area 52
thca companies area 52
thc vape area 52
thcv gummies area 52