docker
docker出现背景
:
传统:jar包 —- 运维部署环境(与测试环境不是同一个 可能出现各种各样的问题)
docker: jar包 — 写dockerfile文件 打包项目带上环境 —–上传仓库 —-下载镜像 运行
docker的本质 :对进程进行封装隔离,而被隔离的进程也被称为容器,完全独立于宿主机的进程。
·
docker的镜像为分层结构
所有docker镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层。
镜像(Image)
:镜像为容器运行提供 程序、环境、资源
镜像操作常用命令
docker search 镜像名 在dockerhub中搜索镜像
docker pull 镜像名 从dockerhub中拉取到本地
docker push 镜像名 将本地镜像上传至仓库
docker build 使用 Dockerfile 创建镜像
-f :指定要使用的Dockerfile路径;
-m :设置内存最大值;
--rm :设置镜像成功后删除中间容器;
--network: 默认 default。在构建期间设置RUN指令的网络模式
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签
容器(Container
):根据镜像中的程序、配置 创建出的运行程序
docker ps 正在运行的容器
-a 所有已创建的容器
-l 最近创建的容器
docker inspect 获取容器的元数据 (json格式)
docker attach 连接到正在运行的容器中
docker run 创建新容器
-d 后台运行
-it 设置交互终端
--name= 容器名
-v 挂载目录
-p 宿主机端口:容器端口 映射端口
仓库(Repository)
:存放镜像的仓库,可从仓库拉取镜像
基本命令
docker image ls 列出所有镜像
docker pull xxxx 从仓库拉取镜像
dockere image rm image_name/image_id 删除镜像
docker run -it 镜像名 /bin/bash 根据镜像创建容器
docker start container_id 启动容器
docker stop container_id 停止容器
docker ps 查看所有运行中的容器
docker ps -a 查看所有容器
docker rm container_id 删除容器
docker container prune 删除所有退出的容器
docker 数据卷
docker容器中产生的数据 同步到宿主机
一方改变会引起另一方的改变
dockerfile
docker 网络
这里真是个坑
windows 与 linux 两个docker版本在网络的实现方面有很大的不同
linux宿主机 中会有 docker0网桥 (相当于一台交换机)而创建的所有容器都在这个网段
并且 宿主机可以ping通容器
windows版本 中没有docker0网桥 访问方式类似vpn直连 通过映射端口访问容器应用
但是宿主机无法ping通 容器 容器可以ping通宿主机
另外同一宿主机上的容器 可以互通
官网原文
docker官方文档链接:https://docs.docker.com/docker-for-windows/networking/