需要的安装包

1
yum install -y yum-utils

使用阿里云的镜像仓库

1
2
3
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker相关的组件

1
yum install -y docker-ce docker-ce-cli containerd.io

启动docker

1
systemctl start docker

停止docker

1
systemctl stop docker

查看已安装的镜像

1
docker images

下载镜像

1
docker pull xxx

删除镜像

1
2
docker rmi xxx,xxx... #删除
docker rmi -f xxx,xxx... #强制删除

新建容器并重启

1
2
3
4
5
6
7
8
docker run [可选参数] image

参数说明:
--name="Name" 容器名称
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 主机端口:容器端口
-P 随机指定端口

查看所有运行的容器

1
2
3
4
5
6
docker ps

参数:
-a # 列出当前正在运行的容器+历史运行过的容器
-n=? # 最近运行的容器,只列出n个,例如 -n=1
-q # 只显示容器的编号

删除容器

1
2
docker rm 容器id #删除
docker rm -f 容器id #强制删除

启动和停止容器的操作

1
2
3
4
docker start 容器id     # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器

查看日志

1
2
3
4
5
6
docker logs -f -t -n 10 容器id或者容器名称

参数:
--follow,-f 关注日志输出
--timestamps,-t 显示时间戳
--tail,-n 从日志末尾显示的行数

进入容器

1
docker exec -it 容器id bash

复制容器文件到主机中

1
docker cp 容器id:容器文件地址 主机文件地址

用docker安装5.7.17版本的mysql

指定版本号下载

1
docker pull mysql:5.7.17

运行镜像

1
2
3
4
5
6
7
8
9
10
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.17

参数:
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称
--restart=always:总是跟随docker启动
--privileged=true:获取宿主机root权限
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
-d mysql:5.7.17:后台运行mysql容器,版本是5.7.17。


打开navicat测试连接

解决mysql中文乱码的问题

安装vim

  1. 默认下载地址由于是海外地址,下载速度异常慢而且可能中断更新流程,所以做下面配置:
    1
    2
    3
    4
    echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free" >/etc/apt/sources.list
    echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free" >>/etc/apt/sources.list
    echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free" >>/etc/apt/sources.list
    echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free" >>/etc/apt/sources.list
  2. 然后才安装vim
    1
    apt-get update
    1
    apt-get install vim

修改mysql编码格式

  1. docker安装mysql,没有什么问题,导入sql文件,也没有什么问题。使用sql语句查询,没有什么问题。但是,在我以前启动springboot项目中,查询出来的数据却是中文乱码,所以得修改mysql编码格式,使用utf8
  2. 在容器里进入 /etc/mysql/mysql.conf.d目录中
    1
    cd /etc/mysql/mysql.conf.d
  3. 修改mysqld.cnf
    1
    vim mysqld.cnf
    原文件长这个样子

    按i进入编辑模式,加入这几行代码
    1
    2
    3
    4
    5
    6
    7
    8
    [client]
    default-character-set=utf8

    [mysql]
    default-character-set=utf8

    [mysqld]
    character_set_server = utf8

    修改完 esc + :wq + enter保存并退出
  4. 重启mysql容器
    然后执行sql,就可以看到我们的编码全部改为utf8了。
    1
    show variables like 'character%'

    这样一来,我们再创建数据库,操作数据库,基本上就不会出现中文乱码了。

docker安装nginx

下载nginx镜像

1
docker pull nginx

创建挂载在主机的文件夹目录

1
2
3
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

创建一个临时nginx容器,把文件复制到主机

1
docker run --name tempnginx -p 80:80 -d nginx

把文件复制到主机的目的是下一步创建并运行nginx容器时,容器有相对应的主机挂载文件

1
2
3
docker cp tempnginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
docker cp tempnginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
docker cp tempnginx:/usr/share/nginx/html /home/nginx/

然后删除临时nginx容器

1
docker rm -f tempnginx

以挂载文件方式创建并运行nginx容器

1
2
3
4
5
6
docker run -p 80:80 \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

用docker安装redis

下载redis镜像

1
docker pull redis

创建挂载在主机的文件夹目录

1
2
mkdir -p /home/redis/conf
mkdir -p /home/redis/data

其实步骤和docker安装nginx差不多,不过这边有一点区别,我们这边直接创建redis.conf,目的是下一步创建并运行redis容器时,容器有相对应的主机挂载文件

1
touch /home/redis/conf/redis.conf

以挂载文件方式创建并运行redis容器

1
2
3
4
5
6
7
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis \
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/redis/data:/data \
--privileged=true \
-d redis redis-server /etc/redis/redis.conf

--privileged=true设置redis启动不会自动退出,因为redis.conf文件中的daemonize为yes,意思是redis服务在后台运行,与docker中的-d参数冲突了。

使用redis镜像执行redis-cli命令连接

1
docker exec -it redis redis-cli

敲几个命令试一下