Docker学习笔记

docker安装(CentOS)

参考官网教程:https://docs.docker.com/engine/install/centos/

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
sudo docker run hello-world		//有延迟会卡住等待一会自动下载

按步骤执行即可

如需配置镜像加速源,使用阿里源操作如下:
请添加图片描述
进入点击管理控制台
请添加图片描述
按步骤执行上图操作文档即可

初识docker

请添加图片描述
如安装时配置了阿里源镜像加速则镜像仓库下载地址不再是Docker Hub
请添加图片描述

  • 端口映射左边为宿主机端口,右边为容器端口(容器也有独立ip但外部无法访问,因此通过端口映射实现外部交互)
  • 环境变量参数可访问Docker Hub官网查询具体软件对应的Environment Variables
  • 完整的镜像名字格式为:Repository:Tag(镜像名:版本号),上述案例无版本号默认下载最新版本

常见命令

请添加图片描述

  • docker pull:下载镜像(不运行)
  • docker push:推送镜像(一般是推送私服仓库)
  • docker images:查看本地所有镜像
  • docker rmi:删除镜像
  • docker run:运行镜像并生成容器(如本地无镜像则自动执行docker pull下载,注意:每次运行都生成新容器)
  • docker stop:暂停容器(容器还存在只是停了)
  • docker start:启动停止的容器(不会生成新容器)
  • docker ps:查看所有正在运行的容器(加 -a 查看所有容器)
  • docker rm:删除容器
  • docker logs:查看容器日志
  • docker exec:进入容器(可操作容器文件和linux系统一样)
  • docker bulid:将dockerfile文件构建为本地镜像
  • docker save:将本地镜像打包成文件(可传给其他人docker load生成本地镜像)
  • docker load:将docker文件加载为本地镜像
  • docker save和docker load一般不适用而是使用docker push上镜像仓库供他人docker pull下载
  • docker inspect:查看容器详情

数据卷挂载

数据卷是为了方便操作容器内文件,或者方便迁移容器产生的数据
请添加图片描述
数据卷挂载以后形成双向绑定(即无论修改宿主机还是容器都会同步),数据卷的路径是固定的(var/lib/docker/volumes/)
请添加图片描述

  • 在执行docker run 命令时,使用 -v 数据卷(名称):容器内目录 可以完成数据卷挂载
  • 当创建容器时,如果挂在了数据卷且数据卷不存在,会自动创建数据卷(因此都使用docker run -v不会使用 docker volume create命令)

本地目录挂载

本地目录挂载可以理解为自定义路径的数据卷挂载

  • 在执行docker run 命令时,使用 -v 本地目录:容器内目录 可以完成本地目录挂载
  • 本地目录必须以"/“或”./"开头,如直接以名称开头,会被识别为数据卷而非本地目录
    • -v mysql : /var/lib/mysql 会被识别为一个数据卷叫mysql
    • -v ./mysql : /var/lib/mysql 会被识别为当前目录下的mysql目录

Dockerfile语法

请添加图片描述
请添加图片描述
请添加图片描述

自定义镜像

在这里插入图片描述

  • . 没有指定文件名称则要求Dockerfile文件名称必须为Dockerfile
  • 命令:docker build -t 镜像名称 Dockerfile目录

容器网络互联

docker0

在这里插入图片描述

  • 172.17.0.1/16表示一个网段,前两位不动,范围172.17.0.1~172.17.255.255
  • 创建的容器默认分配docker0(docker0是个虚拟网卡)网段范围ip,容器之间能够相互ping通
  • 由于docker0网段的ip是随机分配的,程序配置文件ip不能随之修改,因此需要创建自定义网络(可通过容器名称指定,docker0只能通过ip指定)

自定义网络

在这里插入图片描述

  • docker network create创建后也会出现一个和docker0一样的网卡和对应网段,但可以使用容器名称互相ping通
  • 调用docker network connect是需要网络已经创建存在,且容器也存在,之后容器会存在两个网络中有两个ip(一个docker0网段的,一个自定义的),可通过创建容器docker run 时 加上 --network 网络名 直接加入网络(但也需要提前create创建网络)

DockerCompose介绍

Docker Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署
在这里插入图片描述
在这里插入图片描述

  • 举例如上图左侧使用docker run 命令启动部署如果有多个相关联的服务,则需要多次执行不同的docker run命令,使用右侧Docker Compose只需要和写配置文件一样再同级下继续填写容器信息,对应的网络等也不需要提前创建,执行yml文件时会自动创建,通过build还可以构建Dockerfile文件(具体语法官网查看)

DockerCompose命令

在这里插入图片描述

常用软件安装

mysql5.7

docker run -d --name mysql5.7 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf.d:/etc/mysql/conf.d \
--network=custom-network \
mysql:5.7

nacos

docker run -d --name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e MYSQL_SERVICE_HOST=mysql5.7 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e SPRING_DATASOURCE_PLATFORM=mysql \
--network=custom-network \
nacos/nacos-server
  • 38
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值