安装
使用官方安装脚本自动安装
安装命令如下: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 部署
- 拉取 mysql 镜像
docker pull mysql:5.7 or docker pull mysql:8.0.36
- 创建 mysql 数据文件挂载目录
cd /home/ubuntu/docker/mysql
mkdir -p data
- 创建 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
参考文档:
遇到问题
重启 docker:systemctl restart docker.servicesudo service docker restart
docker启动日志:/var/log/upstart/docker.log
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 ethan89@aliyun.com