先为王宝强的电视剧推

image

说回正话

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

安装后检查
image

我们先来总体规划下命令 然后验证测试‘

docker search 搜索镜像
docker pull 下载镜像(docker pull 镜像名:版本)
docker images 镜像列表
docker rmi 删除镜像
docker save -o 文件名 镜像名 导出到磁盘
docker load -I 文件名 导入镜像

是的这里有个坑 也就是docker镜像源加速的问题
首先这个时间段docker已经被墙了
所以当你search后会出现以下问题

image

那就来解决:

vim /etc/docker/daemon.json

image

配置这一个就够了 就是暴力加入多个镜像
参考:https://blog.csdn.net/m0_55333789/ 博客找了很多这个目前是奏效的
关于还有一些可用的加速源:https://www.cnblogs.com/wwkjs/p/18757415/dockerhub

此时search不行但是你可以直接pull拉取

因为我的已经pull过了 就不演示了
image

我们再来验证:
docker save -o 文件名 镜像名 导出到磁盘
docker load -I 文件名 导入镜像

假设将nginx镜像导出到磁盘上为nginx_fang文件
然后咱们再删除镜像 再通过文件导入

image

image


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默认的端口
前者不可重复 后者可以重复(因为容器之间是相互隔离的)

image

image

再来一个--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
image

进入gao容器的bash curl访问fang docker exec -it gao bash
image

2.创建网络 并将其归入此网络 直接固定域名访问

创建网络niubi
image

归入网络 加上参数重写启动
docker run -d --name gao -p 88:88 --network niubi nginx
docker run -d --name fang -p 90:88 --network niubi nginx

image

直接域名访问 效果一致
image

最后来一个常见的MySQL启动

image

拉取镜像: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)

image

docker run --name fang_redis -d -v fang:/data redis
进入fang目录下的_data 创建一个文件
进入redis的bash 发现其data下同步了创建的文件

image

image

2.更改ngix的index.html数据卷操作 显示页面访问修改内容

/var/lib/docker/volumes/ 下的html修改index.html
然后启动docker run -d -p 80:80 -v html:/usr/share/nginx/html nginx

image

image

image

那些像mysql redis nginx一些配置文件或是像欢迎页面文件的存放位置可以去hub上搜索 都会有详细的教程

最后在介绍一个可视化工具docker desktop

image

具体学习很简单也有命令行
参考:https://blog.csdn.net/Natsuago/article/details/145588600

还有一个关于docker的介绍文章也不错:
https://zhuanlan.zhihu.com/p/187505981

posted on 2025-03-28 11:11  蒸饺  阅读(9)  评论(0)    收藏  举报