两分钟上手docker

首先要明白,docker中的镜像和容器,挂载卷的概念,这几个搞清楚了, 就成功了一半

镜像

镜像就是我们使用 docker pull 命令去各大厂商的镜像仓库中拉下来的, 记住, 这是镜像,就是你来创建容器的模板, 你的容器创建是依赖镜像的 , 镜像是各大公司 比如nginx , mysql 等公司,专门制作的 docker 的镜像,供开发者使用的

复制代码
docker pull mysql:5.7
docker pull nginx      //这里没有写版本号,就默认是 latest 

容器

容器才是我们用的目的, 我们的所有服务都是容器中提供的,也就是我们使用 docker run -d 来创建出来的

复制代码
docker run -d --name mynginx -p 80:80 nginx
docker run -d --name testmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 TZ=Asia/Shanghai mysql5.7

解释一下这个命令

docker run -d -d 的作用是让进程在后面运行, 也就是说要启动(创建一个容器了)

--name testmysql 是给新建的容器起了一个名称

-p 3306:3306 这是说把 宿主机的 3306 和 容器中的 3306 端口作了绑定

-e MYSQL_ROOT_PASSWORD=123 TZ=Asia/Shanghai 这里是给mysql 的root用户设置了一个密码123 ,时区是上海, 这个参数因镜像的不同是有差异的, 具体要看制作镜像的厂商要求填什么参数, 可以自行查找对应的文档

通过以上的命令,我们就已经把容器创建好了, 此时我们可以操作 镜像和容器了

查看镜像 删除镜像

复制代码
docker images  //查看
docker rmi mysql:5.7  //删除

查看所有的容器

复制代码
docker ps // 查看运行中的容器
docker ps -a  //查看所有的容器(停止的,运行的都有)
docker stop testmysql  // 停止一个容器
docker rm testmysql  //删除一个容器

我们还可以进入容器的内部,来简单的操作容器

复制代码
docker exec -it testmysql bash

docker exec 就是进入容器内部的命令

-it

-i(--interactive):保持标准输入(STDIN)打开。即使没有附着到容器,也允许你向容器内输入内容。简单说,就是让你能敲键盘。

-t(--tty):分配一个伪终端(Pseudotty)。这会让命令输出带上格式(比如颜色、表格对齐、终端提示符 root@...)。简单说,就是让界面像本地命令行一样美观,而不是纯文本流。

如果不加 -t:你看不到 root@xxxx:/# 这种提示符,输入命令时也没有回显,就像在对着一个黑洞说话。

如果不加 -i:你无法交互输入,执行 bash 后容器会直接退出,因为没东西可读。

testmysql 是容器名

bash 是开启一个交互式的终端来进行交互

我们还可以查看,镜像或 容器的信息, 比如容器的ip地址(虽然容器的ip 没什么用处)

复制代码
docker inspect mynginx  //  查看容器的信息 其中可以看到容器的 ip 等信息
//如果我们要看镜像的信息
docker image inspect nginx  //注意这里最后是镜像的名称, 不是容器哟

挂载卷

挂载卷可以理解为在 宿主机中开辟了一个文件夹与容器中的一个文件夹实现了双向绑定, 更改任意地方的文件, 宿主机和容器中的文件都会发生变化

说一下为什么要这么做, 因为我们使用的容器都是最小化的系统, 用的甚至连 vim cat 等工具都没有提供, 但是这些工具, 我们的宿主机是有的,而且操作也方便, 也有我们就使用挂载卷的功能,然后在宿主机上修改文件,达到修改容器中的文件的目的

挂载卷的使用

复制代码
docker run -d --name mynginx -p 80:80 -v html:/usr/share/nginx/html  nginx

这个命令和创建一个容器是一样的, 就是多了一个 -v 的参数

-v html:/usr/share/nginx/html 是指在宿主机的 创建一个 html 卷 ,这里也可以指定成目录,如果是/html 表示根目录下的html 目录, 如果是 html 表示数据卷名, 对应容器中的 /usr/share/nginx/html

当我们创建好了之后, 如果我们想查看所有的挂载卷

复制代码
docker volume ls
# 查看所有卷在宿主机上的实际存储位置
docker volume inspect $(docker volume ls -q)

如果想要查看,挂载卷和容器的对应关系

复制代码
docker inspect -f '{{.Name}} -> {{range .Mounts}}{{.Destination}} (宿主机: {{.Source}}) {{end}}' $(docker ps -aq)
相关推荐
邪修king2 小时前
Re: Linux系统篇(十八):进程篇(七): 进程深度解析:从 fork 创建到退出的完整旅程(附写时拷贝原理 + 代码实战)
java·linux·运维
程序员老赵2 小时前
Docker 部署 go2rtc:轻松搭建摄像头多协议流媒体平台
前端·docker·直播
湫默3 小时前
运维八股文
运维
Discipline~Hai3 小时前
Linux网络编程03-HTTP协议
linux·运维·服务器·网络·网络协议·http·linux网络编程
CV-杨帆3 小时前
在自己的服务器上搭建VLLM 以Qwen3.5-0.8B与Qwen3.5-4B为模型基础
运维·服务器·vllm
程序猿乐锅3 小时前
【计算机组成原理 | 第八章】I/O系统
运维·服务器·网络
青瓦梦滋3 小时前
Linux高级IO
linux·运维·服务器·网络·网络协议·tcp/ip
꯭自꯭闭꯭3 小时前
达梦(DM8)安装测试
linux·运维·服务器·数据库
牢姐与蒯3 小时前
Linux进程(七).进程控制
linux·运维·服务器·ubuntu