Ubuntu16.04 服务器环境配置 – Docker、MySQL、Redis

安装Docker
1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io2. 安装 https 相关的软件包
sudo apt-get update # 先更新一下软件源库信息sudo apt-get install apt-transport-https ca-certificates curl software-properties-common3. 设置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 # 安装最新版的docker5. 查看Docker版本
docker --version6. 解决 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 redis3. 运行容器
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-handshake3. 拉取Mysql版本为5.7的镜像
docker pull mysql:5.74. 运行容器
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 ps6. 连接Mysql数据库
mysql -h127.0.0.1 -uroot -p1234567. 新建库并设置用户访问权限
新建数据库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