docker
docker 与 虚拟机的区别
多个 docker 容器是用同一个内核,而多个虚拟机是每一个都有自己的操作系统与内核
所以多个 docker 容器就相当于多个进程一样
docker 的实现
主要是 cgroups 机制用来限制和隔离进程的资源与使用。
namespace 机制用来隔离进程的资源视图,每个容器只能看到自己内部的的进程ID,各种资源等,看不到宿主机的。
docker 的网络
宿主机与容器内网络不通,所以可以用 docker run -p <宿主机端口>:<容器端口> [镜像名] [启动命令],用来映射宿主机端口与容器端口,比如某一个程序是在localhost:80起一个网页,容器内执行这个程序,但是宿主机的localhost:80上并不能查看到这个网页,当映射了宿主机端口与容器端口,这时在宿主机也可以访问容器内的网络服务,从而在宿主机的localhost:80上访问这个网页了
常用命令
- doker pull 镜像名:拉取镜像
- docker run 镜像名:运行容器
- docker rm 容器名:删除容器
- docker rmi 镜像名:删除镜像
- docker stop 容器名:停止容器运行,但不删除容器
- docker ps -a:显示所有容器,包括运行和停止运行的
- docker exec -it 容器名或者编号 [命令]:在一个已经启动(running)的容器内部,额外运行一个新的命令或进程。它不会重启容器,也不会影响容器主进程(PID 1),常用 docker exec -it <容器名或ID> /bin/bash,进入容器进行调试
- docker run -p <宿主机端口>:<容器端口> [镜像名] [启动命令]:Docker 中用于 端口映射(Port Mapping) 的关键参数,它的作用是将容器内部的端口暴露到宿主机(你的电脑)上,从而让你能从外部访问容器中的服务(比如 Web 服务器、数据库等)。

浙公网安备 33010602011771号