先为王宝强的电视剧推
说回正话
1.镜像操作
我们不适用注册云服务器
在本地使用虚拟机 默认已有虚拟机网上教程很多
使用Centos7  连接工具使用Xshell
 配置docker yum源。
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动& 开机启动docker; enable + start 二合一
systemctl enable docker --now
安装后检查
我们先来总体规划下命令 然后验证测试‘
docker search 搜索镜像
docker pull 下载镜像(docker pull 镜像名:版本)
docker images 镜像列表
docker rmi 删除镜像
docker save -o 文件名 镜像名 导出到磁盘
docker load -I 文件名 导入镜像
是的这里有个坑 也就是docker镜像源加速的问题
首先这个时间段docker已经被墙了
所以当你search后会出现以下问题
那就来解决:
vim /etc/docker/daemon.json
配置这一个就够了 就是暴力加入多个镜像
参考:https://blog.csdn.net/m0_55333789/ 博客找了很多这个目前是奏效的
关于还有一些可用的加速源:https://www.cnblogs.com/wwkjs/p/18757415/dockerhub
此时search不行但是你可以直接pull拉取
因为我的已经pull过了 就不演示了
我们再来验证:
docker save -o 文件名 镜像名 导出到磁盘
docker load -I 文件名 导入镜像
假设将nginx镜像导出到磁盘上为nginx_fang文件
然后咱们再删除镜像 再通过文件导入
2.容器操作
容器命令:
运行 docker run
查看 docker ps(-a 所有)
日志 docker logs
(以下加入容器名)
停止 docker stop
启动 docker start
重启 docker restart
状态 docker stats
进入 docker exec
删除 docker rm
批量删除 docker rm -f $(docker ps -aq)
容器间的访问例如:
docker exec -it 名字 bash
docker inspect 名字 查看某个容器的唯一ip
docker network ls 查看有的网络
假设我们浏览器访问映射nginx
docker run -d(后台启动) --name 容器自定义名字 -p 80:80(端口映射) nginx
前为你自定义的 后面为nginx默认的端口
前者不可重复 后者可以重复(因为容器之间是相互隔离的)
再来一个--network参数 网络间两容器访问
假定两个nginx启动 一个fang 90 一个gao 88
gao访问fang
创建两个容器:
docker run -d --name fang -p 90:88 nginx
docker run -d --name gao -p 88:88 nginx
1.默认网络访问
gao 访问 fang  curl http://(fang的容器ip地址):80(此为容器默认端口号 而不是向外暴露的)
查看fang的容器唯一id docker inspect fang
进入gao容器的bash curl访问fang docker exec -it gao bash
2.创建网络 并将其归入此网络 直接固定域名访问
创建网络niubi
归入网络 加上参数重写启动
docker run -d --name gao -p 88:88 --network niubi nginx
docker run -d --name fang -p 90:88 --network niubi nginx
直接域名访问 效果一致
最后来一个常见的MySQL启动
拉取镜像:docker pull mysql
启动:docker run -d -p 3306:3306 -v /app/myconf:/etc/mysql/conf.d --network okok --name haha -e MYSQL_ROOT_PASSWORD=123456 mysql-d  后台启动 
-p 3306:3306   端口映射 前面你暴露自定义的  后者为默认的 
-v /app/myconf:/etc/MySQL/confd  数据配置
-e  MYSQL_ROOT_PASSWORD=root 环境变量配置
--network  加入网络
--name 自定义名字
3.其他
使用docker compose:
上线下线启动停止扩容
docker compose up
docker compose down
docker compose start x x x
docker compose stop x x x
docker compose scale x=3
数据卷命令:
docker volume create 创建
docker volume ls 目录
docker volume inspect 进入某个数据卷
关于第一个docker compose的操作参考尚硅谷的教程:
https://www.yuque.com/leifengyang/sutong/au0lv3sv3eldsmn8#uhW2Q
我主要来验证一下后面数据卷
作用就是你可以自己干一个数据和你要用的容器数据同步 可以防止你的容器傻逼没了
你的数据还在 依旧可以直接干进去 我大致理解其作用如此
两个例子:
1.挂载卷:例如让fang目录和redis的data目录同步 修改是同步的
docker volume create fang
(默认创建的所在目录/var/lib/docker/volumes/fang/_data)
docker run --name fang_redis -d -v fang:/data redis
进入fang目录下的_data 创建一个文件
进入redis的bash 发现其data下同步了创建的文件
2.更改ngix的index.html数据卷操作 显示页面访问修改内容
/var/lib/docker/volumes/ 下的html修改index.html
然后启动docker run -d -p 80:80 -v html:/usr/share/nginx/html nginx
那些像mysql redis nginx一些配置文件或是像欢迎页面文件的存放位置可以去hub上搜索 都会有详细的教程
最后在介绍一个可视化工具docker desktop
具体学习很简单也有命令行
参考:https://blog.csdn.net/Natsuago/article/details/145588600
还有一个关于docker的介绍文章也不错:
https://zhuanlan.zhihu.com/p/187505981
 
                    
                 























 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号