Docker入门教程

基本概念

Docker是一个用于 构建 运行 传送 应用程序的平台

Docker和虚拟机的区别

虚拟机

虚拟机是完整的操作系统,是通过虚拟化完成的

Docker

Docker并不需要一个完整的操作系统,而是使用宿主机的操作系统,所以启动非常快,同时因为需要的资源更少,所以可以在一台物理服务器上运行更多的容器

安装配置

下载Docker Docker Desktop: The #1 Containerization Tool for Developers | Docker

然后双击你下载的文件

输入指令

docker version

启动完成

注意:如果你只能看到Client,而没有Server说明docker没有启动

        win11安装教程建议看:【Docker】掌握 Docker魔法:Windows 11 平台上的完美容器部署终极指南_win11安装docker-CSDN博客这位大佬写的

容器化

  1. 创建一个Dockerfile
  2. 使用Dockerfile构建镜像
  3. 使用镜像创建和运行容器

快速入门

部署mysql

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql

解读

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

  • --name mysql : 给容器起个名字叫mysql,可以叫别的

  • -p 3306:3306 : 设置端口映射。

    • 容器是隔离环境,外界不可访问。但是可以宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。

    • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。

    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口

  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定

    • 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码

  • mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像

    • 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号

    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest

Docker基础

常见命令

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
拉取镜像

docker pull 镜像名称

删除本地镜像

docker rmi 镜像名称

查看本地镜像

docker images

创建并运行容器

docker run

删除容器

docker rm [-f] 容器名

设置容器的开机自启

docker update --restart=always 容器名称

-f:强制删除

保存镜像到本地压缩文件

docker save  -o 文件名 镜像名:latest

latest: 是指版本 这个不能缺少

加载本地压缩文件到镜像

docker load

查看日志

docker logs [ -f ] 容器名 

-f: 持续输出日志,相当于监听端口

进入容器内部

docker exec -it 容器名 bash

-it:添加一个可交互的终端

数据卷

数据卷是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁

常用命令

docker volume create

创建数据卷

docker volume ls

查看所有数据卷

docker volume rm

删除指定数据卷

docker volume inspect

查看某个数据卷的详情

docker volume prune

清除数据卷

注意:容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。而且创建容器的过程中,数据卷会自动创建

提示:

  • 在执行docker run命令时,使用-v 数据卷:容器内目录 可以完成数据卷的挂载
  • 在创建容器时,如果挂在了数据卷且数据卷不存在,会自动创建数据卷
容器挂载

docker inspect 容器名

查询容器的详细信息

 容器的本地目录挂载

  • 在执行docker run命令时,使用 -v 本地目录:容器内目录 可以完成本地目录的挂载
  • 本地目录必须以 "/" 或 "./"开头,如果直接以名称开头,会被识别为数据卷而非本地目录
    • -v mysql:/var/lib/mysql 会被识别为一个数据卷叫mysql
    • -v ./mysql:/var/lib/mysql 会被识别为当前目录下的mysql目录

自定义镜像

        没学会。。。。。

容器网络

容器的网络IP其实是一个虚拟的IP,其值并不固定与某一个容器绑定,如果我们在开发时写死某个IP,而在部署时很可能MySQL容器的IP会发生变化,连接会失败。

命令

说明

docker network create

创建一个网络

docker network ls

查看所有网络

docker network rm

删除指定网络

docker network prune

清除未使用的网络

docker network connect

使指定容器连接加入某网络

docker network disconnect

使指定容器连接离开某网络

docker network inspect

查看网络详细信息

创建容器的时候加入网络

docker run -d --name my -p 3307:3306 --network 网络名 镜像

注意: 这样创建的容器是没有默认网桥的

案例

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值