前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker有哪些常见命令?什么是Docker数据卷?

Docker有哪些常见命令?什么是Docker数据卷?

原创
作者头像
reload
发布2024-04-26 16:03:58
2412
发布2024-04-26 16:03:58
举报
文章被收录于专栏:Java后端Java后端

哈喽,大家好呀!这里是码农后端。上一篇我们介绍了Docker的安装以及腾讯云镜像加速源的配置。本篇将带你学习Docker的常见命令、数据卷及自定义镜像等相关知识。

1、什么是镜像与容器?

利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)

镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(container)

镜像仓库:存储和管理镜像的平台。

Docker官方维护了一个公共仓库:Docker Hub。官网:https://hub.docker.com/

2、部署MySQL及命令分析

2.1 部署命令
代码语言:shell
复制
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql
2.2 命令分析

1)docker run:创建并运行一个容器,-d是让容器在后台运行

2)--name mysql:给容器起名,必须唯一

3)-p 3306:3306:设置端口映射

4)-e KEY=VALUE:设置环境变量

5)mysql:指定运行的镜像的名字

注:镜像名称一般由两部分组成:repository:tag。其中repository就是镜像名,tag是镜像的版本;当没有指定tag时,默认是latest(即最新版本的镜像)

6)参数总结

-d : 让容器后台运行。

--name : 给容器命名。

-e : 环境变量

-p : 宿主机端口映射到容器内端口,如 -p 80:80 \

3、Docker常见命令

3.1 常见命令

Docker最常见的命令是操作镜像、容器的命令。

官方文档: https://docs.docker.com/

常用的命令归纳如下图,各命令代表含义也在图中标明。

3.2 举例说明

1)查看容器运行状态:

代码语言:shell
复制
docker ps

上述看起来比较混乱,可以使用如下格式化方式访问,看起来更加规范清楚

代码语言:shell
复制
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

2)进入容器内部

代码语言:shell
复制
docker exec

注:-it代表添加一个可输入的终端,bash代表进入容器后以命令行的方式进行交互。

其他命令自行尝试。

3.3 命令别名

使用格式化方式查看容器运行状态时,对应的命令较长且不好记,此时就可以为其取别名。

1)使用vi命令进入如下文件

代码语言:shell
复制
vi ~/.bashrc

2)在文件内部自定义别名

如将格式化方式查看容器运行状态的命令起别名为 dps;按 i进入编辑模式,使用上下方向键定位到待插入的地方,插入如下代码:

代码语言:shell
复制
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'

查看所有本地镜像的命令起别名为 dis。

代码语言:shell
复制
alias dis='docker images'

仅供参考,具体可以根据个人喜好设定。

添加好自定义的别名后,按 esc回到命令模式,输入 :wq 保存并退出。

3)最后,执行命令使别名生效

代码语言:shell
复制
source /root/.bashrc

好了,以后就开心地可以使用别名了。

4、Docker数据卷

4.1 常见命令

数据卷(volume)是一个虚拟目录,它将宿主机目录映射到容器内目录,方便我们操作容器内文件,或者方便迁移容器产生的数据。

简单理解:数据卷就是容器内目录与宿主机目录之间映射的桥梁。

如下是数据卷的常见命令,直接记最后一个单词即可;也可在终端输入 docker volume --help查看。

1)创建数据卷

代码语言:shell
复制
docker volume create

2)查看所有数据卷

代码语言:shell
复制
docker volume ls

3)删除指定数据卷

代码语言:shell
复制
docker volume rm

4)查看某个数据卷的详情

代码语言:shell
复制
docker volume inspect

5)清除数据卷

代码语言:shell
复制
docker volume prune
4.2 数据卷挂载

1)在创建容器时,利用 -v 数据卷名:容器内目录完成挂载

2)容器创建时,如果发现挂载的数据卷不存在,则会自动创建

3)案例:

分析:

宿主机目录与html卷进行映射,而html卷又与容器目录进行映射,所以宿主机目录间接地与容器目录产生映射关系。

5、本地目录挂载

1)在执行docker run命令时,使用 -v 本地目录:容器内目录,可以完成本地目录挂载

注:本地目录必须以“/”或“./”开头,如果直接以名称开头,会被识别为数据卷而非本地目录。

2)示例

如下会被识别为一个数据卷叫mysql

代码语言:shell
复制
-v mysql : /var/lib/mysql 

如下会被识别为当前目录下的mysql目录

代码语言:shell
复制
-v ./mysql : /var/lib/mysql 

6、自定义镜像

6.1 镜像结构

镜像中包含了应用程序所需要的运行环境、函数库、配置、以及应用本身等各种文件,这些文件分层打包而成。

6.2 Dockerfile

1)Dockerfile是一个文本文件,其中包含一个个的指令(Instruction)。

指令用来说明要执行何种操作来构建镜像;将来Docker可以根据Dockerfile帮我们构建镜像。

简言之,Dockerfile就是利用固定的指令来描述镜像的结构和构建过程。常见指令如下

2)构建镜像的命令

代码语言:shell
复制
docker build -t 镜像名 Dockerfile目录

7、容器网络互联

1)默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上

2)只有加入自定义网络的容器才能通过容器名互相访问

通过自定义的网络,以后就能非常方便地进行容器间的相互访问。直接通过容器名访问,而非IP地址。

Docker的网络操作命令如下:

| 命令 | 说明 |

| :--- | :----: | ---: |

| docker network create | 创建一个网络 |

| docker network ls | 查看所有网络 |

| docker network rm | 删除指定网络 |

| docker network prune | 清除未使用的网络 |

| docker network connect | 使指定容器连接加入某网络 |

| docker network disconnect | 使指定容器连接离开某网络 |

| docker network inspect | 查看网络详细信息 |

无需死记,具体的使用方法可以通过 docker network --help 和 docker network connect --help 两个命令查看

8、DockerCompose

1)概述

Docker Compose通过一个单独的docker-compose.yml模板文件,来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署

如下,左边是使用 docker run 方式创建并运行容器,右边是使用Docker Compose模版文件定义的容器。

2)命令格式

代码语言:shell
复制
docker compose [OPTIONS][COMMAND]

好了,以上就是这篇文章的内容了,我们下期再见。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是镜像与容器?
  • 2、部署MySQL及命令分析
    • 2.1 部署命令
      • 2.2 命令分析
      • 3、Docker常见命令
        • 3.1 常见命令
          • 3.2 举例说明
            • 3.3 命令别名
            • 4、Docker数据卷
              • 4.1 常见命令
                • 4.2 数据卷挂载
                • 5、本地目录挂载
                • 6、自定义镜像
                  • 6.1 镜像结构
                    • 6.2 Dockerfile
                    • 7、容器网络互联
                    • 8、DockerCompose
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档