Docker基本使用

一、安装

参考黑马程序员的讲义

‍‌​‌​‌​⁠‬​⁠​​​‍​‬​​‌​‌‌​​‍​​​‌​​‍‍‍‌​​安装Docker - 飞书云文档

二、原理

去docker的镜像仓库中下载镜像到本地镜像,通过本地镜像复制到容器中,每个容器都是独立的。

三、docker run

其中-e的环境变量去docker hub官网中查对应镜像的介绍中,environment的一项中有写

四、docker常见命令

Docker Docs

命令 说明 文档地址
docker pull 拉取镜像 docker pull
docker push 推送镜像到DockerRegistry docker push
docker images 查看本地镜像 docker images
docker rmi 删除本地镜像 docker rmi
docker run 创建并运行容器(不能重复创建) docker run
docker stop 停止指定容器 docker stop
docker start 启动指定容器 docker start
docker restart 重新启动容器 docker restart
docker rm 删除指定容器 docs.docker.com
docker ps 查看容器 docker ps
docker logs 查看容器运行日志 docker logs
docker exec 进入容器 docker exec
docker save 保存镜像到本地压缩文件 docker save
docker load 加载本地压缩文件到镜像 docker load
docker inspect 查看容器详细信息 docker inspect
bash 复制代码
# 设置容器开机自启
docker update --restart=always [容器名/容器id]

# Docker开机自启
systemctl enable docker

五、设置命令别名

当我们有的命令太长了,我们可以考虑使用这个方式

修改/root/.bashrc文件

记得保存后要source该文件

六、数据卷

1.体系结构

​​‍​‬​‍​‌‌​⁠​‌​​‬​‬​⁠‌⁠​​‌​‌⁠​​‍​​​​‌​‌‬​​​day02-Docker - 飞书云文档

数据卷类似Vue的挂在,容器和宿主机的文件是同步增删的。

2.常用命令

命令 说明 文档地址
docker volume create 创建数据卷 docker volume create
docker volume ls 查看所有数据卷 docs.docker.com
docker volume rm 删除指定数据卷 docs.docker.com
docker volume inspect 查看某个数据卷的详情 docs.docker.com
docker volume prune 清除数据卷 docker volume prune
bash 复制代码
# 首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

# 查看数据卷
docker volume ls

# 查看数据卷详情
docker volume inspect html

# 进入容器内部
docker exec -it nginx bash

挂载示例

容器要挂载哪些目录,你看你常用哪些,就在官方文档查哪些的路径,挂就完了

bash 复制代码
# 创建并运行新mysql容器,挂载本地目录
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v ./mysql/data:/var/lib/mysql \
  -v ./mysql/conf:/etc/mysql/conf.d \
  -v ./mysql/init:/docker-entrypoint-initdb.d \
  mysql

七、自制镜像

1.体系结构

我们要从0部署一个Java应用,大概流程是这样:

  • 准备一个linux服务(CentOS或者Ubuntu均可)

  • 安装并配置JDK

  • 上传Jar包

  • 运行jar包

那因此,我们打包镜像也是分成这么几步:

  • 准备Linux运行环境(java项目并不需要完整的操作系统,仅仅是基础运行环境即可)

  • 安装并配置JDK

  • 拷贝jar包

  • 配置启动脚本

2.dockerfile镜像打包常用命令

指令 说明 示例
FROM 指定基础镜像 FROM centos:6
ENV 设置环境变量,可在后面指令使用 ENV key value
COPY 拷贝本地文件到镜像的指定目录 COPY ./xx.jar /tmp/app.jar
RUN 执行Linux的shell命令,一般是安装过程的命令 RUN yum install gcc
EXPOSE 指定容器运行时监听的端口,是给镜像使用者看的 EXPOSE 8080
ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar

通常打包Linux和jdk这种每个项目都要做的功能都有别人为我们整合好的Layer

八、网络

容器的网络IP其实是一个虚拟的IP,其值并不固定与某一个容器绑定,如果我们在开发时写死某个IP,而在部署时很可能MySQL容器的IP会发生变化,连接会失败。
所以我们需要自定义一个网络,直接根据容器名进行访问而不是ip,容器名不会变

命令 说明 文档地址
docker network create 创建一个网络 docker network create
docker network ls 查看所有网络 docs.docker.com
docker network rm 删除指定网络 docs.docker.com
docker network prune 清除未使用的网络 docs.docker.com
docker network connect 使指定容器连接加入某网络 docs.docker.com
docker network disconnect 使指定容器连接离开某网络 docker network disconnect
docker network inspect 查看网络详细信息 docker network inspect
相关推荐
无名-CODING2 小时前
从零开始!Vue3+SpringBoot前后端分离项目Docker部署实战(中):Spring Boot后端与Docker Compose串联
spring boot·后端·docker
菩提树下的凡夫2 小时前
基于C++语言的Onnx CUDA加速部署推理
linux·运维·人工智能
竹之却2 小时前
Ubuntu 系统安装 Ollama 教程
linux·运维·ubuntu·ollama
珠海西格2 小时前
4 月 1 日起执行分布式光伏监控新规,直接影响从业者与项目收益
大数据·运维·服务器·分布式·能源
Leinwin10 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_8653825010 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇10 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.75910 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣11 小时前
智能体选型实战指南
运维·人工智能