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

发布于:2024-04-29 ⋅ 阅读:(29) ⋅ 点赞:(0)

117ba73acf2682417ff87918772000d9.gif

喜欢就点击上方关注我们吧!

2cf37e4ead7a79eaa52f2b482b64b682.png

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

9c16ab9c9ad6ca9fc571ca8d47cf4480.jpeg

1、什么是镜像与容器?

c22cdc0260dae021a91e83876d1aef21.png

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

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

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

Docker官方维护了一个公共仓库:Docker Hub。

官网:https://hub.docker.com/

2、部署MySQL及命令分析

2.1 部署命令
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql
2.2 命令分析

b1e78235df74834079c1fb39c0753e27.png

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/

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

be4707e405e0bc5b7caa2517831b767e.png

3.2 举例说明

1)查看容器运行状态:

docker ps

348aa4149c879e1e234c520c59b3633e.png

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

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

36dfdc9205adda03f74289b92f0f92ae.png

2)进入容器内部

docker exec

fddaa7bbbd73f78bb197b3240a491298.png

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

其他命令自行尝试。

3.3 命令别名

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

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

vi ~/.bashrc

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

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

alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'

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

alias dis='docker images'

0d41dc1b292397b656e9f699a81a7924.png

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

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

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

source /root/.bashrc

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

4、Docker数据卷

4.1 常见命令

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

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

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

1)创建数据卷

docker volume create

2)查看所有数据卷

docker volume ls

3)删除指定数据卷

docker volume rm

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

docker volume inspect

5)清除数据卷

docker volume prune
4.2 数据卷挂载

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

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

3)案例:

7f3638398d74c49ce76b15f2cd1ad28c.png

分析:

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

5、本地目录挂载

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

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

2)示例

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

-v mysql : /var/lib/mysql

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

-v ./mysql : /var/lib/mysql

6、自定义镜像

6.1 镜像结构

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

df7cb40678fe90101b09d11e161ad14f.png

6.2 Dockerfile

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

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

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

e4607cdec8aaa752874c01aaa0cc831b.jpeg

2)构建镜像的命令

docker build -t 镜像名 Dockerfile目录

7、容器网络互联

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

c54d8efc8b261d8a43d58ed3f1a107e4.jpeg

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 两个命令查看

131ec5119b114ecbad0676392f8507c3.png

8、DockerCompose

1)概述

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

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

8ce495328ea5abb4b21f88b2b8dc09a9.jpeg

2)命令格式

docker compose [OPTIONS][COMMAND]

513cc35c1b17ddea966bfd096c3919e1.png

好了,以上就是今天这篇文章的全部内容了。如果你想及时看到我的文章,只需做这几个动作:点星标、点在看(包括赞)、评论、分享,我就会经常出现在您的常读列表,后面更新都会提醒。感谢大家的关注和支持,祝大家生活美满,学业有成,事业蒸蒸日上!

da9685c8708f3c7e1cc5d0079a9fe534.gif

喜欢就点击上方关注我们吧!

5e8309eb7cc53d39e144af908da24a5e.png

往期精彩文章推荐(点击下方蓝字即可阅读!)

往期推荐

支付宝红包又来了!!这次真的非常大!

五一快乐!!假期红包大放送!超大超多红包送不停,福气多多~手慢无!

2分钟带你快速了解什么是MyBatisPlus及其核心功能!

如何注册一个自己的域名?如何创建阿里云ECS云服务器?