两分钟上手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)
相关推荐
穷人小水滴2 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
EatFans2 小时前
Docker 实战部署:从本地镜像到云服务器,一篇走通 FastAPI + Celery + MySQL + Redis + Nginx
docker·fastapi
judezh2 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
暗不需求2 小时前
Docker 入门:从「光盘与 DVD」到全栈项目容器化实战
docker·容器·面试
春天花会开1312 小时前
内网 HTTPS 部署实战:私有 CA + Nginx 反向代理全流程复盘
运维·nginx·https
AllFiles2 小时前
K8s Node Exporter 异常 Write 超时排查实录
运维·后端·kubernetes
探索云原生2 小时前
一个 Deployment 就能跑 vLLM,为什么还需要 KServe?
docker·ai·云原生·kubernetes·go
虎头金猫6 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS6 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站6 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展