docker与虚拟机的区别

虚拟机是模拟硬件创建虚拟操作系统,运行多个虚拟机就是运行多个操作系统,docker还是使用宿主机的操作系统

容器与镜像

  • 镜像是程序安装包,容器是运行中的程序,一个镜像可以run出多个容器

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
#我们可以使用
docker pull images
#从仓库下载到本地,要启动镜像的容器输入`run`命令
#查看当前容器列表
docker ps -a
#开启停止状态的容器
docker start <容器名称/容器ID>
#停止容器直接输入stop命令
docker stop <容器名称/容器ID>
#如果我们不需要使用容器了,那么可以将容器删除,但是注意只有容器处于非运行状态时才可以删除:
docker rm <容器名称/容器ID>
#容器在停止后自动删除,我们可以在运行时添加--rm参数:
docker run --rm 镜像名称

构建镜像

dockerfile

  • FROM:
    一个dockerfile必须以FROM指令开始
    作用:指定基础镜像
  • COPY
    作用:将你宿主机 (你电脑) 上的文件或目录,复制到镜像内部。
1
2
#格式: COPY [宿主机路径] [镜像内路径]
COPY target/demo1-0.0.1-SNAPSHOT.jar app.jar
  • RUN
    作用:在构建镜像的过程中,执行 shell 命令(比如安装软件)。
  • EXPOSE
    作用:声明这个容器在运行时,会监听哪个端口。
  • ENTRYPOINT:定义容器的“主程序(入口)”。
  • CMD:定义默认参数。
    如果 ENTRYPOINT 存在,CMD 的内容会作为参数传给 ENTRYPOINT。如果 ENTRYPOINT 不存在,CMD 才会作为主程序。

容器网络类型

docker安装后,会创建三个网络
使用network ls查看
可以看到默认情况下有bridge、host、none这三种网络类型

  • none:本地环回网络,无法连接互联网
  • bridge网络:容器默认使用的网络类型,这是桥接网络,也是应用最广泛的网络类型
    就像容器单独插了一根虚拟的网线,连接到Docker创建的虚拟网络上,而docker0网络实际上作为一个桥接的角色,一头是自己的虚拟子网,另一头是宿主主机的网络。
  • host网络: 当容器连接到此网络后,会共享宿主主机的网络,网络配置也是完全一样的: