为什么学习Docker?
再学完linux后,我们需要远程对Linux虚拟机下载一些软件,如果在Linux里直接用命令下载软件会十分麻烦,所以我们需要通过使用Docker将软件直接下载到Docker中,这样更方便下载和卸载等操作。
一张图弄懂Docker
Docker 是一个应用打包、分发、部署的容器
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任 何流行的Linux 机器上
你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而 普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。
仓库(Repository):是docker提供的一个用来保存镜像的仓库.
镜像(Image):镜像就是一个可执行的包,用来创建容器,docker中每一个软件就是一个镜像.
容器(Container):容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
简而言之就是通过远程仓库拉取到images镜像中,再通过容器Containers来运行即可。不需要下载再linux中下载软件,方便了许多.。
安装Docker
前提:我们已经安装了yum
安装yum-utils,配置镜像源需要使用
yun install -y yum-utils
设置更新docker镜像源
yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
测试docker版本
docker -v(命令行输入后如果显示出版本号则下载Docker成功)
启动常用命令
docker安装成功后并没有启动,
启动命令 systemctl start docker
关闭命令 systemctl stop docker
设置开机自动启动 systemctl enable docker(最好直接这样设置了不然麻烦)
卸载Docker
停止服务
systemctl stop docker
卸载
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
删除文件
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
配置Docker
在etc下创建docker目录
mkdir -p /etc/docker
进入docker目录
cd /etc/docker
创建daemon.json文件
touch daemon.json
修改文件
vim daemon.json
{ "registry-mirrors": ["https://dockerhub.icu"] }(将这串放到daemon.json文件里)
重载配置
systemctl daemon-reload
重启
systemctl restart docker
Docker命令
镜像命令(images)
查看镜像列表
docker images
这就是我的docker镜像中的mysql redis nginx
从docker仓库拉取镜像到本地仓库
docker pull mysql(拉取mysql从远程仓库)
删除本地镜像
docker rmi 镜像名/镜像id
从docker保存镜像到linux本地
docker save 镜像名 > 镜像名.tar
从Linux本地 加载镜像到docker中(这两步可以永久性将镜像保存到Linux中,不然哪天pull镜像拉去不到就换地址吧不然就保留在你这Linux本地里去)
docker load 镜像名 < 镜像名.tar
容器命令(Containers)
启动容器
docker ps -a
启动容器
docker start 容器名
停止容器
docker stop 容器名
删除容器
docker rm 容器名(需要把容器停止了才能删除不然报错)
举例下载一个mysql
下载镜像
docker pull mysql:8.0
创建mysql数据卷
mkdir -p /opt/mysql/data
安装
docker run -d -p 3306:3306 \ --name mysql \ --restart=always \ --privileged=true \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=root \ -v /opt/mysql/data:/var/lib/mysql \ mysql:8.0
这里用到数据卷:你在容器中运行mysql、redis等会产生数据想要保存到linux上就这样挂载。
进入到容器
docker exec -it 容器名/容器id bash
登录mysql
mysql -uroot -proot
修改root账号加密方式(不然容器中的mysql会乱码)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '自定义一个密码';
退出
exit