docker 应用
安装 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论