Ubuntu16.04 服务器环境配置 – Docker、MySQL、Redis
安装Docker
1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io
2. 安装 https 相关的软件包
sudo apt-get update # 先更新一下软件源库信息sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3. 设置apt仓库地址
鉴于国内网络问题,使用国内(阿里云)地址,添加 阿里云 的apt仓库(使用国内源)。
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
4. 安装 Docker 软件
sudo apt-get updatesudo apt-get install docker-ce # 安装最新版的docker
5. 查看Docker版本
docker --version
6. 解决 docker cli 权限问题
想要避免每次在执行 docker 命令都加一个 sudo,可以创建一个 docker 用户组,并将要使用 docker 的普通用户添加到该组。dockerd 进程启动时会将 Unix socket 的读写权限都赋予给 docker 用户组。这样就不需要使用 sudo 了。
创建 docker 用户组
sudo groupadd docker
添加当前用户到 docker 用户组
sudo usermod -aG docker $USER
接下来注销当前用户并重新登录,使前面的设置生效。
7. 使用 docker hub 国内镜像
对于使用 systemd 的系统(Ubuntu 16.04+、Debian 8+、CentOS 7), 在配置文件 /etc/docker/daemon.json 中加入:
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]}
重新启动 dockerd:
sudo systemctl restart docker
安装Redis
1. 创建目录redis,用于存放后面的相关东西
sudo mkdir -p /data/redis/datadirsudo chown -R $USER:$USER /data/redis/
2. 拉取Redis最新版镜像
docker pull redis
3. 运行容器
docker run --name redis --restart=always -p 6379:6379 -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /data/redis/datadir:/data -d redis redis-server --appendonly yes
命令说明:
– –restart=always : 设置实例自动重启
– -p 6379:6379 : 将容器的6379端口映射到主机的6379端口
– -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime : Docker容器时间与主机时间保持一致
– -v /data/redis/datadir:/data : 将主机中redis的data挂载到容器的/data
– redis-server –appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
4. 连接、查看容器
docker exec -it redis redis-cli
安装Mysql
1. 创建目录mysql
用于存放后面的相关东西。
sudo mkdir -p /data/mysql/datadir /data/mysql/logs /data/mysql/conf.dsudo chown -R $USER:$USER /data/mysql/
2. 添加配置文件my.cnf
vi /data/mysql/conf.d/my.cnf
内容如下:
[mysqld]pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysql#log-error = /var/log/mysql/error.log# By default we only accept connections from localhost#bind-address = 127.0.0.1# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0character_set_server=utf8mb4character_set_filesystem=utf8mb4collation-server=utf8mb4_unicode_ciinit-connect='SET NAMES utf8mb4'init_connect='SET collation_connection = utf8mb4_unicode_ci'skip-character-set-client-handshake
3. 拉取Mysql版本为5.7的镜像
docker pull mysql:5.7
4. 运行容器
docker run --restart=always --name mysql5.7 -p 3306:3306 -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /data/mysql/datadir:/var/lib/mysql -v /data/mysql/logs:/logs -v /data/mysql/conf.d/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
命令说明:
– -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
– -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime : Docker容器时间与主机时间保持一致
– -v /data/mysql/datadir:/var/lib/mysql : 将主机mysql下的datadir目录挂载到容器的 /var/lib/mysql
– -v /data/mysql/logs:/logs : 将主机mysql目录下的 logs 目录挂载到容器的 /logs
– -v /data/mysql/conf.d/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf 将主机mysql目录下的 conf.d/my.cnf 挂载到容器的 /etc/mysql/mysql.conf.d/mysqld.cnf
– -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
5. 查看容器启动情况
docker ps
6. 连接Mysql数据库
mysql -h127.0.0.1 -uroot -p123456
7. 新建库并设置用户访问权限
新建数据库testdb
create database testdb;
创建用户testuser,可以远程访问
create user testuser@'%' identified by 'test123';
设置用户testuser可在远程访问访问库testdb
GRANT ALL PRIVILEGES ON testdb.* TO testuser;FLUSH PRIVILEGES;
参考:
- 《Docker Hub 源使用帮助》http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker
- 《Ubuntu16.04安装Docker》https://segmentfault.com/a/1190000014066388