news 2026/3/11 10:00:57

docker的基本概念的个人回顾

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
docker的基本概念的个人回顾

目录

docker

1、概念

2、docker启动nginx

1、基本流程

2、下载nginx

3、启动容器

4、docker run 详解

5、修改nginx页面

6、保存镜像

7、镜像分享到社区

8、总结

3、docker存储与Nginx页面挂载

1、目录挂载

2、卷映射

总结

4、docker网络

5、redis主从同步集群


docker

1、概念

1、运行docker pull redis,命令会发给docker主机,主机获取下载这个软件镜像到本地-----》运行docker run redis, docker主机会先查看是否有这个镜像,没有则下载,有则放入容器中运行。

2、使用 docker build my,就会制作名为my的镜像 -----》使用docker push my,就会把my的镜像放到镜像仓库上

3、容器:安装容器的运行时环境,利用容器启动一个个应用,每个应用运行在自己的容器内部,每个容器都包含这个应用运行的完整环境,且容器相互隔离。简单理解,容器就是轻量的虚拟机技术,共享操作系统内核

2、docker启动nginx

1、基本流程

2、下载nginx

docker search nginx # 查看是否有镜像 docker pull nginx # 获取镜像 docker images # 查看系统的镜像 docker pull nginx:版本 # 下载指定版本nginx: docker rmi 镜像名:版本|镜像id # 删除镜像

3、启动容器

1、每一个容器都代表一个运行中的应用

2、启动nginx应用:

docker run [选项] 镜像名 [启动命令] [启动参数] docker run nginx # 启动nginx docker run nginx # 启动nginx

3、查看运行中的容器:

docker ps docker ps -a # 查看所有容器,包括停止的, 查看容器名字

4、启动容器

docker start 容器名 | 容器id

5、停止容器

docker stop 容器名 | 容器 id

6、查看容器状态

docker stats 容器id | 容器名

7、查看容器日志

docker logs 容器id | 容器名

8、删除容器, 但删除前需要先停止容器运行

docker rm 容器id

4、docker run 详解

1、先删除之前启动的容器 docker rm -f 容器id

2、每个容器启动时,都运行在自己的空间内,互相隔离。需要给容器做一个映射。例如图中,把88端口对应到容器内的80端口上,而容器内的nginx运行在80端口。由此,我们可以访问容器内部的nginx。(每个容器就是一个小虚拟机)

2、启动命令

docker run -d(后台启动) --name 容器名(给这个容器起名字) -p 主机端口:容器端口 (设置主机端口和容器端口的映射) 镜像名

5、修改nginx页面

1、使用docker exec 进入到装了nginx的容器里,容器里有一个文件路径 /usr/share/nginx/html, 存放着nginx的默认页面。nginx的镜像里有官方文档可供查阅

2、进入docker交互模式

docker exec -it(启动交互模式) 容器名 | id /bin/bash(使用控制台模式交互) # 进入容器内部

3、容器内部基本就是一个linux系统,linux系统命令在这里也可以使用

4、进入nginx页面存放位置

cd /usr/share/nginx/html # 进入Nginx页面

5、可以使用 echo "文本内容" > index.html 来尝试着修改默认页面

echo "文本内容" > index.html # 直接修改Nginx页面

6、exit # 退出容器

exit # 退出容器

6、保存镜像

1、提交镜像

docker commit -m "提交信息" 容器名 镜像名 #把运行中的容器变成镜像

2、把镜像保存成文件

docker save -o 文件名.tar(把镜像写出成tar文件) 镜像名

3、使用别人的本地镜像文件:

docker load -i 镜像压缩包路径 # 加载镜像后,使用 docker run 命令就可以运行镜像成容器

7、镜像分享到社区

1、登录网站

docker login # 之后按照提示输入用户名密码就行

2、对镜像进行改名:

docker tag 原来的镜像 用户名/新的镜像名:tag标签。 # 例如:docker tag my-nginx-service:v1.0 username/nginx-service:latest

3、镜像改名后,推送镜像

docker push 更改后的镜像名 # 推送镜像

8、总结

3、docker存储与Nginx页面挂载

1、目录挂载

1、正常情况下,容器内部数据修改麻烦容易丢失

2、docker的目录挂载:指定外部主机的一个文件夹A,告诉容器,这个文件夹A就是容器内的文件B。需要在docker run 运行容器时使用-v 外部路径:容器内部路径选项

3、目录挂载是将宿主机上一个你非常熟悉的具体目录路径,直接映射到容器内的一个目录。两边操作的是同一份文件。

docker run -d(后台启动) --name 容器名(给这个容器起名字) -p 主机端口:容器端口 (设置主机端口和容器端口的映射) -v 外部路径:容器内部路径 镜像名

2、卷映射

1、在docker run中使用 -v选项时,使用 -v ngconf(卷名):/etc/nginx, 可以读取配置文件。这个目录放在主机的/var/lib/docker/volumes/(容器名),里面有配置文件,修改那里面的配置文件可以同步改变容器内nginx的配置。

2、使用卷映射后, cd /var/lib/docker/volumes/ngconf/data.容器里边的/etc/nginx的内容被放到了这个目录下

3、目录挂载:初始启动外部目录有什么,容器里面就有什么

卷映射: 初始启动容器内部有什么,外部就有什么。外部的修改会实时同步到容器内部,且外部目录位置固定

4、卷挂载是由Docker创建和管理的存储空间。你可以把它想象成一块由Docker分配的“U盘”,你只需要给它起个名字,然后挂载到容器里即可,不需要关心它在宿主机上的具体路径。

4、

# 创建一个名为“my-website”的卷 docker volume create my-website # 启动容器并挂载卷 docker run -d --name my-nginx-with-volume -p 8080:80 -v my-website:/usr/share/nginx/html nginx docker volume ls # 列出所有的卷 docker volume inspect 卷名 # 查看卷的详细信息

5、

如果卷是空的,Docker会自动将容器内部目标目录的原始内容复制到卷中。这确保了应用能正常启动。

你可以通过docker volume inspect my-website命令查看这个卷在宿主机上的真实存储路径,但通常不需要直接操作它。

删除容器后,my-website这个卷和数据依然存在。下次新启动一个容器并挂载同一个卷,数据就会恢复。

总结

假设外部主机目录为A,容器内部目标目录为B

1、使用目录挂载:A的内容直接覆盖B。对A的修改同步修改B。容器迁移后,必须创建相同路径的A才能正常使用。适用于开发时

2、使用卷挂载:当一个新创建的、空的卷挂载到容器目录B时,Docker会先将B目录里的原始内容(来自镜像)复制到卷中,然后容器再启动。适用于开发完成,需要迁移或数据备份时。

4、docker网络

1、每个容器启动时,都会加入一个docker的默认网络,叫docker0。

2、每个启动的容器,相当于连接在这个网络里的虚拟机,docker会为每个容器分配ip

3、命令

docker container inspect 容器名 # 查看这个容器的具体状态

4、容器内部可以通过这个虚拟网络互相访问

5、docker为每个容器分配唯一ip,使用容器ip + 容器端口可以互相访问

6、ip可能会变化,包括内部的。因此,我们需要创建自定义网络,容器名就是域名,使用域名来访问对方的服务。

7、

docker network create 网络名 # 创建一个自己的网络 docker network ls # 列举出网络 docker run -d(后台启动) --name 容器名(给这个容器起名字) --network 网络名(这个容器要加入的网络) -p 主机端口:容器端口 (设置主机端口和容器端口的映射) -v 外部路径:容器内部路径 -v 卷名:容器内部配置文件路径(卷映射同步更改配置文件) 镜像名

8、在容器内部可以通过 http://容器名:容器端口 访问另一个容器

5、redis主从同步集群

1、概念

1、redis1主机负责写请求,redis2主机负责读请求。

2、两个容器需要放入到同一个网络

3、同时,保存redis数据的目录可以挂载到机器外边

4、同时,需要手动设置两个redis同步

5、redis1设置复制模式为master,同时设置访问密码

6、redis2,设置同步模式为slave下属,设置主机的地址(容器内部自定义网络,容器名即为域名),设置主机容器内部的端口,设置访问master的密码,设置自己的密码。

7、推荐使用比特纳米的redis镜像,已经配置好了集群设置。官方的没有。我们只需要按照说明设置环境变量就行

8、具体的命令如下

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/5 3:41:23

Godot资源逆向工程实战:从PCK文件解析到游戏资源提取全流程

Godot资源逆向工程实战:从PCK文件解析到游戏资源提取全流程 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 在独立游戏开发和游戏研究领域,Godot引擎的PCK资源文件格式一直是…

作者头像 李华
网站建设 2026/3/10 13:08:52

快速解决Fiji Jaunch组件重复文件错误的终极指南

快速解决Fiji Jaunch组件重复文件错误的终极指南 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji是一款功能强大的图像处理软件,但近期Windows x64平台的…

作者头像 李华
网站建设 2026/3/5 3:45:42

百度网盘提取码自动获取工具:3步告别手动查找烦恼

百度网盘提取码自动获取工具:3步告别手动查找烦恼 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而四处搜索吗?每次遇到需要输入提取码的资源,都要在多个网…

作者头像 李华
网站建设 2026/3/6 21:16:08

单链表的应用-反转链表and删除链表中间结点

反转链表解法:多指针1.创建三个指针first:记录当前节点的 “前一个节点”(反转后,当前节点要指向它);second:指向当前正在处理的节点(每轮循环要反转它的next指针)&#…

作者头像 李华
网站建设 2026/3/10 15:18:32

JavaScript 中的组合模式(Composite Pattern):实现树形结构的统一操作

JavaScript 中的组合模式:实现树形结构的统一操作各位技术爱好者,欢迎来到今天的讲座。我们将深入探讨 JavaScript 中一个极其强大且实用的设计模式——组合模式(Composite Pattern)。这个模式的核心在于,它能让我们以…

作者头像 李华