容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行。
Docker容器与虚拟机不同点:
容器的生命周期包括创建、运行、暂停、停止和删除等阶段。
首先,在创建阶段,Docker引擎会读取Dockerfile中的指令构建镜像,然后使用该镜像创建一个新的容器,并在主机文件系统中生成一个独特的文件系统层。
接着,在运行阶段,容器中的应用开始执行,处理请求并与Docker引擎进行交互。此阶段中,可以进行网络设置和端口映射,确保容器可以与外界通信。
此外,在暂停阶段,容器内的所有进程都将被暂停,但可以在之后继续运行。而在停止阶段,容器将不再接受新的请求,并且其资源及状态可以被保留以便未来重启。最后,在删除阶段,将移除容器及其所有相关数据,包括主机文件系统中的文件系统层。
容器创建 – docker create
利用镜像创建出一个Created 状态的待启动容器:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
-t, --tty 分配一个伪TTY,也就是分配虚拟终端
-i, --interactive 即使没有连接,也要保持STDIN打开
--name 为容器起名,如果没有指定将会随机产生一个名称
将一个或多个处于创建状态或关闭状态的容器启动起来:docker start [OPTIONS] CONTAINER [CONTAINER...]
-a, --attach 将当前shell的 STDOUT/STDERR 连接到容器上
-i, --interactive 将当前shell的 STDIN连接到容器上
容器创建并启动 – docker run
利用镜像创建并启动一个容器,docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-t, --tty 分配一个伪TTY,也就是分配虚拟终端
-i, --interactive 即使没有连接,也要保持STDIN打开
-d, --detach 在后台运行容器并打印出容器ID
--rm 当容器退出运行后,自动删除容器
容器暂停 – docker pause
暂停一个或多个处于运行状态的容器 :docker pause CONTAINER [CONTAINER...]
容器取消暂停 – docker unpause
docker unpause CONTAINER [CONTAINER...]
容器关闭 – docker stop
关闭一个或多个处于暂停状态或者运行状态的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
-t, --time int 关闭前,等待的时间,单位秒
容器终止 – docker kill
强制并立即关闭一个或多个处于暂停状态或者运行状态的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
-s, --signal string 指定发送给容器的关闭信号
docker stop和docker kill的区别:
容器详细信息 – docker container inspect
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
-f, --format string 利用特定Go语言的format格式输出结果
-s, --size 显示总大小
容器日志信息 – docker logs
docker logs [OPTIONS] CONTAINER
容器连接 – docker attach
将当前终端的STDIN、STDOUT、STDERR绑定到正在运行的容器的主进程上实现连接
docker attach [OPTIONS] CONTAINER
Docker容器与镜像的关系
容器的网络默认与宿主机、与其他容器都是相互隔离。
容器中可以运行一些网络应用(如nginx、web应用、数据库等),如果要让外部也可以访问这些容器内运行的网络应用,那么就需要配置网络来实现。 有可能有的需求下,容器不想让它的网络与宿主机、与其他容器隔离。或者容器根本不需要网络。
Docker有五种网络驱动模式:
查看网络 – docker network ls
docker network ls [OPTIONS]
创建网络 – docker network create
docker network create [OPTIONS] NETWORK
-d, --driver string 指定网络的驱动(默认 "bridge")
网络删除 – docker network rm
docker network rm NETWORK [NETWORK...]
查看网络信息:
docker network inspect [OPTIONS] NETWORK [NETWORK...]