docker

docker学习

快捷键

  • 查看 latest 镜像具体版本:docker image inspect 镜像名称:latest | grep -i version

  • 删除镜像:docker rmi 镜像ID1 镜像ID2

  • 删除容器:docker rm 容器ID

  • 查看已在运行的容器 docker ps -a

  • 在运行的容器中执行命令 docker exec -it 容器名 命令

    • docker exec -it xxx /bin/bash

    • docker exec -it xxx /bin/sh /root/xxx.sh

    • docker exec -it 9df70f9a0714 /bin/bash

  • 启动 docker systemctl start docker

  • 停止 docker systemctl stop docker

  • 重启 docker systemctl restart docker

  • 开机启动 docker systemctl enable docker

  • 查看日志 docker logs [容器名 | 容器ID ]

    • docker logs -f [容器名 | 容器ID ] #表示实时的跟踪日志输出

    • docker logs --since 30m myredis # 此处 --since 30m 是查看此容器30分钟之内的日志情况。

  • 复制容器内文件到本地 docker cp 容器ID:目标路径 本地文件路径

windows 安装 redis 注意事项

windows 下使用 gitbash 安装 redis,例如这样:

出现安装完 redis 容器就报错停止运行,查看容器 logs:

解决方法很简答,使用 windows 自带的终端或者 powershell 运行命令就行了

Docker 容器没有 vim 命令

Docker mysql:5.7 时区问题最简单方法

启动时加-e TZ=Asia/Shanghai

docker 容器内访问宿主机 127.0.0.1 localhost 服务

docker 的 container 内,本身是一个微小的主机,那么在容器内请求 127.0.0.1 或者 localhost,自然是请求到了 container 本身的 网络,而无法抵达宿主机。例如,我用 docker 启动了一个 springboot 项目,项目中有这样一个配置文件:

然后我们创建镜像文件并新建容器:

发现报错,提示连接不上数据库,因为我们需要连接到宿主机的 3306 端口的 mysql 数据库上, 直接这样配置请求到的时容器内的 3306 端口,肯定报错。 Docker 版本高于 v20.10 时引入了host.docker.internal:host-gateway参数 我们修改配置如下:

然后重新创建镜像文件并新建容器,注意配置添加了一行: --add-host=host.docker.internal:host-gateway

这样在容器内部的 jdbc 连接就能访问宿主机的端口了

Last updated

Was this helpful?