SpringCloud第一篇Docker基础

文章目录

一、常见命令

Docker最常见的命令就是操作镜像、容器的命令,详见官方文档: https://docs.docker.com/

需求:

在DockerHub中搜索Nginx镜像,查看镜像的名称

c 复制代码
docker pull nginx

拉取Nginx镜像

查看本地镜像列表

c 复制代码
docker images

创建并运行Nginx容器

c 复制代码
docker run -d --name nginx -p 80:80 nginx

查看容器

c 复制代码
docker ps
docker ps -a

停止容器

c 复制代码
docker stop nginx

再次启动容器

c 复制代码
docker start nginx

进入Nginx容器

c 复制代码
docker exec -it nginx bash
#退出容器
exit

删除容器

c 复制代码
docker rm mysql
docker rm -f mysql 

二、数据卷

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

三、数据挂载

查看容器是否与宿主机挂载

c 复制代码
docker inspect 容器名

Mounts目录下为挂载信息

c 复制代码
docker inspect mysql

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  mysql

四、自定义镜像

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。

更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder

案例:

我们可以基于Ubuntu基础镜像,利用Dockerfile描述镜像结构

c 复制代码
# 指定基础镜像
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为基础镜像,省略前面的步骤:

c 复制代码
# 基础镜像
FROM openjdk:11.0-jre-buster
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

五、网络

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

加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作命令如下:

相关推荐
码云数智-园园2 天前
C++20 Modules 模块详解
java·开发语言·spring
咖啡八杯2 天前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
Flittly2 天前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring
Alsn862 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
李少兄2 天前
从原理到实战:Spring IoC/DI 核心知识体系与高频面试题全解
java·后端·spring
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
慧一居士2 天前
Feign的GET请求如何传递对象参数?
java·spring cloud
ofoxcoding2 天前
在AI API聚合平台配置DeepSeek V3.2提示词缓存实战:快速接入与成本优化指南
人工智能·spring·缓存·ai
一杯奶茶¥2 天前
水果销售网站 CRM客户信息管理系统 超市管理系 酒店管理系统 健身房管理系统 在线音乐网站 校园招聘系统
java·vue.js·spring boot·mysql·spring·java项目
程序员老赵2 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops