docker入门原来如此简单!详细图文!

docker hub官网

Docker Hub 是docker 官方的镜像仓库 ,docker命令默认从docker hub中拉取镜像。docker hub官网地址是:hub.docker.com/,国内访问可能需要魔法。

我们可以在docker hub官网搜素我们想要的镜像信息,比如常用的nginx镜像

拉取镜像

拉取nginx镜像

docker pull命令可以从镜像仓库拉取镜像到本地,比如拉取nginx镜像到本地:

复制代码
docker pull nginx

加上版本号可以下载指定版本的镜像

复制代码
docker pull nginx:1.22

我们也可以在官方查找tags,下载指定的tags镜像

复制代码
docker pull nginx:1.22.0-alpine

拉取命令汇总

  • docker pull nginx 不写默认是latest
  • docker pull nginx:latest
  • docker pull nginx:1.22
  • docker pull nginx:1.22.0-alpine
  • 一般不建议使用latest,因为最新的镜像是滚动更新的,过一段时间,可能跟你本地的不是同一个。

查看镜像

复制代码
docker images

删除镜像

通过如下两个都可以删除镜像:

arduino 复制代码
docker rmi [image]

或者:

arduino 复制代码
docker image rm [image]

我们删除nginx:1.22.0-alpine这个镜像

arduino 复制代码
docker image rm nginx:1.22.0-alpine

容器

运行容器

使用docker run 命令可以运行一个容器。其语法如下:

ini 复制代码
docker run [可选参数] 镜像名:版本 []

我们现在将nginx运行在容器中

css 复制代码
docker run --name my-nginx -d -p 8080:80 nginx:1.22
  • 命令中的**--name** 指定了容器的名称为my-nginx
  • -d代表容器在后台运行
  • -p表示将容器的端口绑定到宿主机的端口上,8080:80中80代表容器端口,8080代表宿主机端口。

默认情况下,容器无法通过外部网络访问,需要使用-p参数将容器的端口映射到宿主机端口,才可以通过宿主机IP进行访问。

默认情况下,我们本机端口是80 ,本机IP是http://localhost/,因此我们访问http://localhost:8080/就可以访问nginx的主页了。(80端口可以省略不写)

查看运行中的容器

复制代码
docker ps

查看容器启动日志

我们可以通过docker logs查看容器启动日志

bash 复制代码
docker logs [容器id或容器名称]
perl 复制代码
docker logs my-nginx

停止容器

arduino 复制代码
docker stop [容器id或容器名称]
arduino 复制代码
docker stop my-nginx

关闭容器后,docker ps就查不到任何东西了,因为它只能查看运行中的容器。

此时,我们可以用docker ps -a 查看所有容器,包括正在运行和停止的

css 复制代码
docker ps -a

删除已停止的容器

bash 复制代码
docker rm my-nginx

安装mysql

运行mysql容器

现在,我们练习安装使用mysql,我们先看看官网提供的示例

mysql在运行时,需要通过-e指定一个环境变量,指定mysql的密码。

ini 复制代码
docker run --name db-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

笔者本地mysql密码为root,所以这里密码写的是root

注意,我们没有使用docker pull下载mysql镜像,但已依旧开启了一个db-mysql新容器。

使用run命令,部署mysql,docker先去本地查找镜像,如果找不到,就去docker hub中拉取镜像

  • --name 定义容器的名称
  • -e 声明环境变量
  • -d容器在后台运行

上述命令我们没有将mysql和本机IP和端口进行绑定,因此无法直接通过本机ip访问mysql。那么,我们如何在容器中使用mysql呢?

操作mysql容器

我们先看看官网的文档

官网告诉我们,通过命令启动一个新mysql容器,并在你原来的mysql容器上运行mysql命令行客户端,允许你对你的数据库实例执行sql语句。我们可以通过下面的命令开启一个新的mysql命令行客户端容器。

css 复制代码
docker run -it --rm [mysql镜像] mysql -h[mysql运行的] -u[mysql用户名] -p

查看容器Ip

我们需要先查看下mysql运行的ip

css 复制代码
docker inspect [容器ip或者容器名称]
复制代码
docker inspect db-mysql

根据查询结果,我们获取到了mysql的运行Ip172.17.0.2

开启新的mysql客户端容器

我们的镜像是mysql:5.7

运行Ip是172.17.0.2, 本地mysql用户名是root,我们执行命令

arduino 复制代码
docker run -it --rm mysql:5.7 mysql -h172.17.0.2 -uroot -p
相关推荐
风落无尘4 小时前
Stable Diffusion WebUI & ComfyUI 完整安装教程:官方部署+一键整合包+Docker容器化(2026最新)
docker·容器·stable diffusion
Mahir084 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
CodeMartain8 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
IT_陈寒8 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
kyriewen9 小时前
面试官让我查各部门工资最高的员工,我用AI三秒写出窗口函数,他愣了
后端·mysql·面试
文心快码BaiduComate9 小时前
干货|Comate Harness Engineering工程实践指南
前端·后端·程序员
光辉GuangHui9 小时前
Agent Skill 也需要测试:如何搭建 Skill 评估框架
前端·后端·llm
我是谁的程序员9 小时前
Mac 上生成 AppStoreInfo.plist 文件,App Store 上架
后端·ios
irving同学462389 小时前
Node 后端实战:JWT 认证与生产级错误处理
前端·后端
Master_Azur9 小时前
单元测试——Junit单元测试框架
后端