重生之我在暑假学习微服务第四天《Docker-下篇》

发布于:2025-07-30 ⋅ 阅读:(22) ⋅ 点赞:(0)

 特别声明:本篇文章对应黑马程序员微服务课程P25-P34

目录

​编辑

一、Docker常见命令

1、先连接上我们的centos7

 2、拉取jnginx

3、镜像操作

(1)保存镜像

 (2)删除镜像

(3)下载镜像

4、容器操作

 (1)将nginx运行到容器中

(2)查看运行中的容器

 (3)简化输出格式

a.先打开这个文件

  b.开始对文件进行修改

c.让文件生效 

d.测试

(4) 停止容器运行

(5)查看所有容器

 (6)启动容器

(7)查看日志 

​编辑 (8)进入容器内部

(9)进入mysql容器

(10)删除容器

二、数据卷

1、创建数据卷

2、查看数据卷

3、查看数据卷详情

4、本地挂载

(1)先查看容器是否挂载数据卷

(2)先创建mysql的本地存储目录

(3)删除mysql容器

 (4)开始创建mysql

三、自定义镜像

1、先下载jre

2、准备一个文件夹存放java打包后的jar包 

3、 准备好Dockerfile文件

 4、开始创建镜像

四、网络

1、添加一个自定义的网络 

 2、容器连接网络

结语


一、Docker常见命令

1、先连接上我们的centos7

启动虚拟机中的centos7,输入账号密码

 启动MobaXterm

这样就连接成功了 

 先去简单的看一下这个图片

 2、拉取jnginx

这里默认拉取的是最新版本

拉取nginx:

 docker pull nginx

查看容器中的镜像:

docker images

 这个单词可以理解为镜像

这样就代表成功了 

 这里如果失败了那应该就是配置文件的问题,可以参考上篇文章配置一下加速器

重生之我在暑假学习微服务第三天《Docker-上篇》-CSDN博客

3、镜像操作

(1)保存镜像

docker save -o nginx.tar nginx:latest
  • docker save:Docker 提供的子命令,用于将一个或多个镜像保存到归档文件中。
  • -o nginx.tar-o 或 --output 参数指定输出文件的名称。这里将文件命名为 nginx.tar
  • nginx:latest:指定要保存的镜像名称及标签(latest 是标签,表示最新版本)。

保存后可以运行ll查看下 

 (2)删除镜像

docker rmi nginx:latest
  • docker rmi 是 Docker 的删除镜像命令。
  • nginx:latest 指定要删除的镜像名称及标签,latest 是默认标签。

删除后再次查看仓库可以看到nginx没了

(3)下载镜像

 除了直接拉取也可以从本地下载,刚才不是保存过一个nginx.tar包吗

再给它下载过来不得了

docker load -i nginx.tar

4、容器操作

 (1)将nginx运行到容器中

也就是这个地方对应的指令

docker run -d --name nginx -p 80:80 nginx

  • docker run
    启动一个新的容器实例。

  • -d
    以“后台模式”(detached mode)运行容器,即容器在后台运行,不占用当前终端。

  • --name nginx
    为容器指定一个名称 nginx,方便后续管理(如停止、重启等)。

  • -p 80:80
    端口映射,格式为 主机端口:容器端口

    • 主机的 80 端口会映射到容器的 80 端口,使得外部可通过 http://localhost 或服务器 IP 访问 Nginx。
  • nginx
    使用的镜像名称(默认从 Docker Hub 拉取最新版 nginx)。

(2)查看运行中的容器

docker ps

 (3)简化输出格式

a.先打开这个文件
vi ~/.bashrc

  b.开始对文件进行修改

加入这两行命令就行,前面是简写,也可以自行添加自己常用的命令

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

c.让文件生效 
source ~/.bashrc
d.测试

修改后要重新运行source ~/.bashrc才会生效 

这样就成功了

(4) 停止容器运行

docker stop nginx

(5)查看所有容器

在dps后面加一个-a就行了

 (6)启动容器

docker start nginx

(7)查看日志 

 (8)进入容器内部

先进入一下nginx容器

docker exec -it nginx bash

可以看到这里变成了容器的id,说明进入成功了 

 可以查看一下当前目录下的所有文件

(9)进入mysql容器

ok,启动成功 

(10)删除容器

docker rm mysql

如果容器正在运行可以在后面加一个-f,这里就不演示了 

二、数据卷

这里说一下我的理解,数据卷大概就是你可以通过你的主机来操作Docker中的nginx容器中的文件,也就是通过数据卷这一中间件来实现交互的功能。

1、创建数据卷

容器挂载数据卷的时候要创建的时候挂载,所以这里要先删除之前的容器

 运行这一命令就行了

docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

-d
以“分离模式”(detached mode)运行容器,即容器在后台运行,不占用当前终端。

--name nginx
为容器指定一个名称 nginx,方便后续通过名称管理容器(如启动、停止等)。

-p 80:80
将主机的 80 端口映射到容器的 80 端口。格式为 主机端口:容器端口,使得外部可以通过主机的 80 端口访问 Nginx 服务。

-v html:/usr/share/nginx/html
创建一个名为 html 的 Docker 卷,并将其挂载到容器的 /usr/share/nginx/html 目录。该目录是 Nginx 默认的静态文件存放路径。

  • 如果 html 卷不存在,Docker 会自动创建。
  • 使用卷的好处是数据持久化,即使容器删除,卷中的数据仍会保留。

 这样就表示成功了

2、查看数据卷

docker volume ls

可以看到刚才创建的html成功了 

3、查看数据卷详情

docker volume inspect html

这里应该就是挂载成功了 

果然成功了,访问出来了nginx的欢迎页面

 

 测试一下修改宿主机能否更改容器中的html

修改成功!!! 

测试一下图片能否展示出来(这里就随便找一张图片了)

访问成功了 !!!

 检查一下nginx中的文件

 可以看到nginx和宿主机文件一样

4、本地挂载

(1)先查看容器是否挂载数据卷

先运行:docker inspect nginx

可以看到卷名是:html,宿主机和nginx的地址都在这

 这里我们的mysql并没有配置过数据卷,所以系统会默认给我们生成一个

 这个名字太复杂了不方便我们的后续操作

(2)先创建mysql的本地存储目录

直接创建在root/mysql下面就行了

(3)删除mysql容器

 不知道那个多余的是否有影响

 (4)开始创建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

这样就成功了 

看是否连接成功了

这里不会连接的可以看一下上篇文章:重生之我在暑假学习微服务第三天《Docker-上篇》-CSDN博客

 这里忘记说了,在连接数据库之前可以先自己创建一个表测试一下

将自己创建的表的sql语句放data里面用于检测连接

成功后如下图

三、自定义镜像

镜像通常由多层(Layers)组成,每一层包含文件系统的变更记录。这些层是只读的,最终通过联合文件系统(如 OverlayFS、AUFS)合并成一个可用的文件系统视图。

1、先下载jre

这里的jre可以用原本自己电脑上面的

2、准备一个文件夹存放java打包后的jar包 

3、 准备好Dockerfile文件

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

 4、开始创建镜像

可以看到镜像创建成功了 ,同时也启动成功了

 可以看到访问成功了

 

四、网络

为了让所有容器能够互相访问,所以加入自定义网络来确保容器间更好的连接

常用指令如下:

1、添加一个自定义的网络 

可以通过ip address来查看一下,这里可以发现我们的网络创建成功了。 

 2、容器连接网络

 可以看到连接成功

可以看到aaa镜像也配置成功了 

 可以看到aaa可以连接到数据库

这里连接nginx失败了,因为不在同一个网段下 

结语

Docker 篇的内容更新还差最后一个项目部署环节啦~ 我计划明天专门更新这部分内容,把步骤拆解得更细致、逻辑梳理得更顺畅,这样大家看起来也能一目了然,跟着操作时也会更清晰省力~ 敬请期待哦~


网站公告

今日签到

点亮在社区的每一天
去签到