ubuntu-docker redis、mysql、postgresql
Lin
xiaominglin789docker
- 1.移除旧版依赖
- 2.安装docker的前置环境依赖
- 3.安装docker
- 6.docker基本操作
- 5.安装docker-compose
- 6.安装redis、mysql、postgresql
1.移除旧版依赖
- 系统环境:
Linux lin 5.8.0-55-generic #62~20.04.1-Ubuntu SMP Wed Jun 2 08:55:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
sudo apt-get remove docker docker-engine docker.io containerd runc
2.安装docker的前置环境依赖
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
- 增加docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 设置 官方 仓库
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3.安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 更换国内仓库源
# vim /etc/docker/daemon.json
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
4.docker基本操作
- 查看镜像: sudo docker images
- 下载镜像: sudo docker pull 镜像名:版本
- 生成容器并运行: sudo docker run 镜像名
- 查看所有容器: sudo docker ps -a
- 查看运行的容器: sudo docker ps
- 停止运行的容器: sudo docker stop 容器id
- 进入容器后台内部: sudo docker exec -it bash 容器id
- 删除容器: sudo docker rm 容器id
- 删除镜像: sudo docker rmi 镜像名
- 容器绑到数据卷、端口映射、后台保护
- -v 本地数据目录:容器内部目录
- -p 本地端口:容器端口
- -d 后台保护
5.安装docker-compose
#下载运行文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#配置权限
sudo chmod +x /usr/local/bin/docker-compose
- 新建镜像、创建容器并后台: docker-compose -f [yml配置文件] up -d
- 移除所有容器以及网络相关: docker-compose down
- 运行容器: docker-compose start 容器名
- 暂停容器: docker-compose stop 容器名
6.安装redis、mysql、postgresql
- redis.yml 配置 本地redis
版本: 6 端口:6379
- 1.
vim /opt/redis/conf/redis.conf
-> 配置密码 -> apem@159.com - 2.启动命令
command
添加登录密码:--requirepass apem@159.com --appendonly yes
- 1.
version: "3"
services:
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- 6379:6379
volumes:
- /opt/redis/data:/data
- /opt/redis/conf/redis.conf:/etc/redis/redis.conf
privileged: true
environment:
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
#覆盖容器启动的redis.conf
command: redis-server --requirepass apem@159.com --appendonly yes
- mysql8.yml 配置
版本:8 端口: 3306
-it => 进入容器后可通过
mysql -u root -p [MYSQL_ROOT_PASSWORD]
登录,才有操作权限,可以 新建管理员赋予操作权限 或 给MYSQL_USER + MYSQL_PASSWORD
操作权限 - 注意: yml environment 配置下 请使用
- key=value
的元组形式。这里使用map的表达形式
有个坑:MYSQL_ROOT_PASSWORD: 123456
设置不成功的, 导致使用root账号密码无法登录数据库...
version: "3"
services:
mysql8:
# 镜像名
image: mysql:8
# 容器名(以后的控制都通过这个)
container_name: mysql8
# 重启策略
restart: always
environment:
# 时区上海
- TZ=Asia/Shanghai
# root用户的密码
- MYSQL_ROOT_PASSWORD=123456
# 初始化数据库(后续的初始化sql会在这个库执行)
- MYSQL_DATABASE=pay-demo
# 初始化临时用户(临时新用户没有什么权限的账号)
- MYSQL_USER=mysql
# 初始化临时用户密码
- MYSQL_PASSWORD=123456
ports:
- 3306:3306
networks:
- app-mysql
volumes:
# 数据挂载
- /opt/mysql8/data:/var/lib/mysql
# 配置挂载
- /opt/mysql8/conf:/etc/mysql/conf.d
# 初始化目录挂载
- /opt/mysql8/init:/docker-entrypoint-initdb.d
command:
# 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改会导致密码无法匹配)
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
networks:
app-mysql:
driver: bridge
- root账号登录mysql, 新建用户, 赋予权限, web应用-远程连接才能成功.
- 创建新用户:
create user 'apem789'@'%' identified by 'apem@159.com';
- 赋予权限:
grant all privileges on *.* to 'apem789'@'%' with grant option;
- 刷新生效:
flush privileges;
查找mysql8容器id, 进入容器内操作
sudo docker ps sudo docker exec -it [容器id] /bin/bash
- postgresql.yml 配置
postgre端口: 5432, admin: localhost:7070
```bash
version: "3"
services:
postgres:
image: "bitnami/postgresql:latest"
container_name: "postgresql"
restart: always
ports:
- 5432:5432
volumes:
- /opt/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=apem@159
networks:
- app-tier
pgadmin:
image: "dpage/pgadmin4:latest"
container_name: "pgadmin"
restart: always
ports:
- 7070:80
depends_on:
- postgres
environment:
- PGADMIN_DEFAULT_EMAIL=159@qq.com
- PGADMIN_DEFAULT_PASSWORD=apem159
networks:
- app-tier
networks:
app-tier:
driver: bridge