老师笔记的官网:https://b11et3un53m.feishu.cn/wiki/MWQIw4Zvhil0I5ktPHwcoqZdnec
先卸载旧的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
安装一个yum工具
yum install -y yum-utils
配置docker的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
查看安装后的版本
docker -v
显示版本后还不一定说明真的安装好了
docker images
#如果提示Cannot connect...,则说明需要分别执行以下俩个命令
#首先要设置开机自启
systemctl enable docker
#然后再启动docker
systemctl start docker
#停止(稍微了解
systemctl stop docker
#重启(稍微了解
systemctl restart docker
再输入images进行检查(不出现Cannot说明已成功
docker images
执行docker ps命令,如果不报错,则说明启动成功
docker ps
配置镜像加速,要先注册阿里云,然后打开容器的镜像加速控制台
首先在/etc目录下新建/docker,然后cd进去该目录,分别执行以下命令
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://wvbb4n2h.mirror.aliyuncs.com"]
}
EOF
再刷新配置文件
systemctl daemon-reload
再重启
systemctl restart docker
-------------------------------------------至此docker安装配置结束-------------------------------------------
部署MySQL
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
#部署完之后要记得进入容器内部,分配root的权限,默认是%所有IP可远程访问,*.*可访问所有库的所有表
-------------------------------------MySQL部署结束,开始镜像/容器操作-------------------------------------
#在DockerHub中搜索Nginx镜像,查看镜像的名称
浏览器中输入https://hub.docker.com/_/nginx
#拉取Nginx镜像
docker pull nginx
#查看本地镜像列表
docker images
#保存镜像到当前目录文件夹
docker save -o nginx.tar nginx:latest
#删除镜像
docker rmi nginx:latest
#重新load刚刚保存到当前文件夹的tar包
docker load -i nginx.tar
#重新查看镜像,发现nginx回来了
docker images
#----------------------------镜像操作结束,开始容器操作----------------------------
#创建并运行Nginx容器
docker run -d --name nginx -p 80:80 nginx
#查看容器(输出有点复杂
docker ps
#格式化查看方式(输出更加清爽
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
#停止容器(用ps查不到是因为ps只会查询在run的容器
docker stop nginx
#查看所有的容器(包含非run的
docker ps -a
#再次启动容器
docker start nginx
#进入Nginx容器(如同进入了一台新的计算机,有各种Linux文件目录
docker exec -it nginx bash
#退出容器
exit
#删除容器(删除前必须要先停止容器,用docker stop nginx停止
docker rm nginx
#或者强制删除(不管运行与否
docker rm nginx -f
#删除完之后再用 docker ps -a 也查询不到了,因为是彻底删除了
---------------------镜像、容器操作结束,开始数据卷操作(主要是部署nginx)---------------------
#首先创建容器并指定数据卷(这里来绑定俩个卷),注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 \
-v nginx_html:/usr/share/nginx/html \
-v nginx_conf:/etc/nginx \
nginx
#查看数据卷列表
docker volume ls
#查看数据卷详情(nginx_html是刚刚创建的,也是上面这个命令返回结果之一),该命令返回的Mountpoint是宿主机的位置
docker volume inspect nginx_html
#cd进入宿主机的这个目录/var/lib/docker/volumes/nginx_html/_data/
#发现下面有俩个html文件,至此,完成了双向数据绑定
#或者cd进入宿主机的这个目录/var/lib/docker/volumes/nginx_conf/_data/
#修改下面的nginx.conf配置文件,完成反向代理,这里可以将80端口指向https://www.baidu.com
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass https://www.baidu.com;
}
}
#修改完.conf文件后,一定要重启nginx服务(此时就需要进入nginx容器内部执行重启命令
docker exec -it nginx bash
nginx -s reload
#此时直接在浏览器中输入IP地址,就能跳转到百度首页
#---------------创建容器及挂载数据卷的操作结束,接下来进行删除数据卷操作---------------
#删除刚刚的html数据卷(先停掉nginx容器
docker stop nginx
然后清理悬空的资源(主要是清理nginx容器
docker system prune
再删除数据卷
docker volume rm nginx_html
docker volume rm nginx_conf
#最后查看数据卷列表(发现不止列表中nginx_html消失,/var/lib/docker/volumes/的nginx_html目录也消失
docker volume ls
拓展:部署tomcat8
先拉取指定版本的镜像:8
docker pull tomcat:8
#然后可以查看现有的镜像
docker images
然后安装
#tomcat:8:镜像名称,与上述拉取名称一致,前面的tomcat1是自命名的,为什么不命名为tomcat是莫名其妙有容器名冲突,很奇怪,所以改成1
docker run -d --name tomcat1 -p 8080:8080 \
-v tomcat_webapps:/usr/local/tomcat/webapps \
tomcat:8
#以上命令把数据卷在容器创立之初也一起挂载了
#在宿主机的该数据卷目录下新建RGB_HEX文件夹,上传index.html和vue.js,最后浏览器中输入特定url即可访问
拓展:部署minio
先拉取最新镜像
docker pull minio/minio
然后安装
docker run -p 9000:9000 -p 9090:9090 \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=321478965" \
-v minio_data:/data \
-v minio_conf:/root/.minio \
minio/minio server \
/data --console-address ":9090" -address ":9000"
在浏览器中输入 http://IP地址:9090 输入相应的账号密码即可登录minio可视化页面
首先创建bucket桶,这里命名为big-event,然后修改access policy为public,然后在里面上传图片
最后浏览器输入 http://IP地址:9000/big-event/avatar.png 即可访问
application.yml配置文件
minio:
host: http://IP地址:9000
url: ${minio.host}/${minio.bucket}/
access-key: minioadmin
secret-key: 321478965
bucket: big-event
可以发现,bash命令中只有3个地方出现了9090,且想要登录可视化页面时,也需要指定9090端口
但是其余的一切访问(浏览器直访图片、springboot项目整合)都仍然用的是9000端口