通过 docker 初始化服务器运行环境

  1. 安装
  2. 更换镜像源
  3. 启动docker
  4. 常用命令
    1. MySql 部署
    2. Redis 部署
    3. Nginx 部署
  5. 遇到问题

安装

使用官方安装脚本自动安装
安装命令如下:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

如果要使用 Docker 作为非 root 用户,则应考虑使用类似以下方式将用户添加到 docker 组:
sudo usermod -aG docker ethan

更换镜像源

使用以下命令编辑或创建 daemon.json 文件:

sudo vim /etc/docker/daemon.json

添加以下内容到 daemon.json 中,然后保存并关闭

{
  "registry-mirrors": [
    "https://<your-mirror>.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}

替换 <your-mirror> 为您申请的专属镜像加速地址(如果没有,可以直接使用公共地址)。

保存文件后,重启 Docker 服务:

sudo systemctl daemon-reload & sudo systemctl restart docker
or sudo service docker restart

启动docker

sudo systemctl start docker or sudo service docker start

常用命令

查看本地镜像:docker images
删除镜像:docker rmi hello-world
查看所有容器:docker ps -a
删除容器:docker rm -f 1e560fca3906
容器起停命令:

docker stop 2b50eae281cb
docker start 2b50eae281cb
docker restart 2b50eae281cb

MySql 部署

  1. 拉取 mysql 镜像

docker pull mysql:5.7 or docker pull mysql:8.0.36

  1. 创建 mysql 数据文件挂载目录
cd /home/ubuntu/docker/mysql

mkdir -p data
  1. 创建 mysql 配置文件
cd /home/ubuntu/docker/mysql
touch my.cnf
vim my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin = mysql-bin
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci
user=mysql
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4
socket = /var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

创建 mysql 容器

sudo docker run --restart=always -p 3306:3306 --name mysql \
-v /home/ubuntu/docker/mysql/data:/var/lib/mysql \
-v /home/ubuntu/docker/mysql/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=Ms@wsx34 \
-d mysql:8.0.36

查看日志:docker logs --tail 200 -f mysql
进入容器:docker exec -it mysql bash
登录 mysql:mysql -u root -p

create user 'test'@'%' identified by '密码';

create database test default character set utf8mb4;
grant all privileges on test.* to test@'%' with grant option;
flush privileges;

Redis 部署

docker pull redis:7.2-alpine

sudo docker run -p 6379:6379 --name redis -v /home/ubuntu/docker/redis/data:/data \
-d redis:7.2-alpine redis-server --requirepass 123@wsx --loglevel warning --maxclients 10000 --appendonly yes --save 60 10 --maxmemory 4gb --maxmemory-policy noeviction

docker exec -it redis /bin/bash

Nginx 部署

docker run -p 10000:10000 --name smnginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx

参考文档:

Ubuntu Docker 安装

遇到问题

重启 docker:
systemctl restart docker.service
sudo service docker restart

docker启动日志:/var/log/upstart/docker.log


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 ethan89@aliyun.com

×

喜欢就点赞,疼爱就打赏