返回介绍

docker 应用

发布于 2024-01-20 01:25:02 字数 7395 浏览 0 评论 0 收藏 0

安装 node

进入 https://hub.daocloud.io 搜索 node,切换到版本获取下载地址

  • docker pull daocloud.io/library/node:12.18
  • docker tag 28faf336034d node 重命名镜像

重命名镜像后 IMAGE ID 都是一样的

也可以导出镜像到本地备份 docker save -o node.image(导出镜像要起的名称) 28faf336034d(要导出的镜像的 ID)

我们先删除之前的镜像 docker rmi 28faf336034d -f 强制删除

再次导入本地镜像

docker load -i node.image(导入的镜像名称)

然后再次重命名镜像即可

docker tag 28faf336034d node:v1.0(版本 v1.0)

安装 Nginx

docker pull daocloud.io/library/nginx:1.13.0-alpine

启动 Nginx 镜像

服务器上启动

docker run --name nginx(起一个容器名称) -d(后台运行) -p 80:80(本机:容器) -v(映射 Nginx 容器的运行目录本机) /root/nginx/log:/var/log/nginx(本机目录:容器目录) -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf(本机目录:容器内 nginx 配置所在目录) -v /root/nginx/conf.d:/etc/nginx/conf.d -v /root/nginx/html:/usr/share/nginx/html f00ab1b3ac6d(nginx 镜像 ID)

本地电脑启动

docker run --name nginx -d -p 8666:80 -v /Users/poetry/Downloads/docker/nginx/log:/var/log/nginx -v /Users/poetry/Downloads/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /Users/poetry/Downloads/docker/nginx/conf.d:/etc/nginx/conf.d -v /Users/poetry/Downloads/docker/nginx/html:/usr/share/nginx/html f00ab1b3ac6d

把 docker 容器中的 Nginx 服务配置映射本地方便管理

访问 docker 暴露的 8666 端口即可

当我们修改了 html 中的文件,无需重启容器即可看到效果

安装 mysql

进入 https://hub.daocloud.io 搜索 mysql,切换到版本获取下载地址

  • docker pull daocloud.io/library/mysql:8.0.20

启动 MySQL 镜像

docker run -d(后台运行) -p 3307:3306(本机端口:MySQL 运行端口) --name mysql(容器名称) -e MYSQL_ROOT_PASSWORD=123456(设置 mysql 密码) be0dbf01a0f3(mysql 镜像 ID)

查看当前正在运行的镜像

docker ps -a(正在运行和停止的镜像-a 都可见)

删除容器

删除之前需要 stop: docker stop bac2692e2b9a(容器 ID)

docker rm bac2692e2b9a(容器 ID:docker ps 获取)

进入容器内部

docker exec -it bac2692e2b9a(容器 ID) sh(指定进入方式)

我们使用 Navicat 新建一个连接测试一下

说明我们使用 docker 安装 MySQL 的方式是没问题的

查看 MySQL 容器日志

docker logs -f(查看最后几条)  bac2692e2b9a(容器 ID)

重启容器

如果修改了容器配置,我们需要重新启动容器

docker restart bac2692e2b9a(容器 ID)

设置 MySQL 权限

mysql8.0 后,需要设置,否则 node 连接不上

docker exec -it bac2692e2b9a sh

mysql -uroot -p
# 远程连接权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

# 刷新权限
FLUSH PRIVILEGES;

# 更新加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

# 更新用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

# 刷新权限
FLUSH PRIVILEGES;

挂载配置文件目录

默认数据库的数据是放在容器里面的,这样的话当容器删除会导致数据丢失。我们想的是删 除容器的时候不删除容器里面的 mysql 数据,这个时候启动容器的时候就可以把 mysql 数据 挂载到外部。

docker run -d(后台运行) -p 3307:3306(本机端口:MySQL 运行端口) -v v /mysql/conf.d:/etc/mysql/conf.d -v /mysql/data:/var/lib/mysql  --name mysql(容器名称) -e MYSQL_ROOT_PASSWORD=123456(设置 mysql 密码) be0dbf01a0f3(mysql 镜像 ID)

docker inspect bac2692e2b9a(容器 ID)

docker inspect bac2692e2b9a | grep mysql

安装 redis

docker pull daocloud.io/library/redis:6.0.3-alpine3.11

启动 Redis 镜像

docker run -d -p 6380:6379 --name redis 29c713657d31(镜像 ID) --requirepass 123456(redis 登录密码)

或进入 redis 镜像后在输入密码

交互式进入 redis 容器

docker exec -it 9751cbc96861(容器 ID) sh

安装 MongoDB

docker pull mongo

启动容器 映射端口 挂载目录

docker run --name mongoTest -p 27018:27017 -v ~/Downloads/docker/mongo:/data/db -d mongo(镜像 ID 或名称)

可以看到通过 -v 挂载到本地的数据

进入容器内部 docker exec -it mongoTest(镜像 ID 或名称) sh

输入 mongo,可以看到 mongo 已经安装成功了,我们从容器外连接容器的 mongo

连接需要密码

docker run -d --name authMongo -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 -p 27019:27017 -v ~/Downloads/docker/authMongo:/data/db mongo(镜像名称或者 ID) --auth

进入容器内部

远程连接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文