1,比较旧的 Docker 版本称为 docker 或 docker-engine ,如果已安装这些程序,请卸载它们以及相关的依赖项。
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
安装Dcoker依赖环境
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库,之后,您可以从仓库安装和更新 Docker
yum install -y yum-utils
device-mapper-persistent-data
lvm2
如果执行上面的命令报异常,可以参考:centos8安装docker 遇到yum install -y yum-utils报错问题解决
设置 Docker 安装地址
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库,之后,您可以从仓库安装和更新 Docker,使用以下命令来设置稳定的仓库(阿里云)
sudo yum-config-manager
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker Engine-Community
安装最新版本的 Docker Engine-Community 和 containerd
sudo yum install -y docker-ce docker-ce-cli containerd.io
如果提示您接受 GPG 密钥,请选是。
Docker 安装完默认未启动,并且已经创建好 docker 用户组,但该用户组下没有用户。
Docker 镜像加速
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
配置daemon.json
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://xxxxx.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
启动Docker
service docker start
验证Docker服务
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
docker run hello-world
运行该代码后首先会从仓库拉取hello-world镜像,然后运行该镜像,运行后会输出一个Hello from Docker!
开启Docker自动补全
使用docker时无法自动补全镜像名和其他参数,这样使用效率大大降低,下面是解决方法:
bash-complete
yum install -y bash-completion
刷新文件
source /usr/share/bash-completion/completions/docker
source /usr/share/bash-completion/bash_completion
测试
输入docker p后docker会将可选项列出来
docker p
Docker架构
Docker总体架构为c/s架构,模块之间松耦合,包含了Client, Daemon, Registry, Graph, Driver, Libcontainer以及Docker Container
Docker得组件
- Docker Client 是用户界面,它支持用户与Docker Daemon之间通信
- Docker Daemon Docker最核心的后台进程,运行于主机上,处理服务请求
- Docker registry是中央registry,支持拥有公有与私有访问权限的Docker容器镜像的备份
- Docker Containers负责应用程序的运行,包括操作系统、用户添加的文件以及元数据
- Docker Images是一个只读模板,用来运行Docker容器
- DockerFile是文件指令集,用来说明如何自动创建Docker镜像
----------------------------docker安装完成,下面安装以docker方式安装mysql------------------------------
安装mysql
查找mysql镜像
我们可以使用 docker search 镜像名称,命令来搜索镜像
docker search mysql
参数解释
搜索出来的有这么多镜像,怎么选择呢
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- OFFICIAL: 是否 docker 官方发布
- stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
- AUTOMATED: 自动构建。
根据参数,我们一般选择 官方发布的,并且stars多的。
下载镜像
可以使用docker pull 镜像名称来拉取镜像,我们选择了第一个Mysql的镜像,我们把它给拉取下来
docker pull mysql
注意事项
- 如果不写版本号默认拉取最新的版本好latest。
- 拉取的时候是多个层一起拉取的,这样可用让其他镜像复用分层
- 如果拉取的镜像不写仓库地址默认就是docker.io/library/
下载指定版本的镜像
我们上面下载的镜像不符合我们的预期,我们需要Mysql5.7的镜像
查找指定镜像
可以登录 https://hub.docker.com 地址搜索镜像
输入需要搜索的镜像名称,并选择对应镜像名称
选择tag标签,这个就是版本的信息
找到符合的版本 的mysql镜像,这里我们选择5.7.33
下载指定版本镜像
刚才我们已经找到了5.7.33版本的Mysql的镜像,我们使用docker pull命令下载,镜像后面跟的是tag也就是版本名称
docker pull mysql:5.7.34
我们发现,我们的新拉取的mysql镜像共用了 部分分层
查看镜像
安装完镜像后,我们需要看一下我们的本地镜像,使用docker images 可用查看本地镜像
docker images
mysql配置
创建MySQL挂载目录,等会会解释什么是挂载路径
#创建MySQL配置的文件夹
mkdir -p /tmp/etc/mysql
#编辑my.cnf配置文件
vi /tmp/etc/mysql/my.cnf
配置MySQL忽略大小写,在我们创建的MySQL配置文件挂载点的目录的my.cnf文件加入如下内容
[mysqld]
lower_case_table_names=1
创建mysql数据目录
因为默认MySQL启动后他的文件是在容器中的,如果我们删除容器,数据也将会消失,我们需要将数据挂载出来。
#创建mysql存储的目录
mkdir -p /tmp/data/mysql
启动mysql
使用docker run 启动容器
docker run -d -p 3306:3306 -v /tmp/etc/mysql:/etc/mysql/mysql.conf.d/ -v /tmp/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.7.38
到这里mysql已经后台运行了
参数解释
- -d:是指容器后台运行,如果不加-d,当用户断开客户端时容器会结束运行
- -p:将容器的3306端口映射到主机的3306端口,用来暴漏端口的
- -v:这个命令是用来挂载目录的,将本地目录挂载到容器中,这样容器操作的就是本地目录
- -e:这个命令是配置环境参数的,这里MYSQL_ROOT_PASSWORD=root指的是用root用户运行mysql,可以登录Docker容器通过ENV命令查看
- –name:这个命令是配置Mysql的容器名称的,如果不配置,默认是随机生成的名字
检查mysql运行状态
使用docker ps可以看到运行中的容器
docker ps
执行命令后,我们看到mysql的服务已经起来了
查看mysql运行日志
现在MySQL容器起来了,并不代表MySQL已经成功启动,我们需要使用docker logs命令查看MySQL的日志
docker logs -f mysql
该命令可以查看容器日志-f是追踪打印日志,可以看到MySQL已经启动了
这个时候就可以用客户端链接mysql了,注意端口是否开放
查看容器挂载的配置文件
可以通过docker exec -ti mysql /bin/bash命令登录容器,检查挂载的配置文件情况
#登录容器
docker exec -ti mysql /bin/bash
查看挂载的数据文件
cd /tmp/data/mysql/ && ll
ok,安装完成