Docker容器管理

  1. Docker容器的创建和运行

  2. 容器的生命周期管理

  3. 容器网络和端口映射

Docker容器管理涵盖了多个关键环节,包括容器的创建与运行、容器的生命周期管理,以及容器网络和端口映射等操作。

1. Docker容器的创建和运行

**创建并启动容器:**使用 docker create 命令基于Docker镜像创建新容器,但并不会启动它。

lua 复制代码
➜  ~ docker create nginx
b4eab7bb0164a3595cb8688379d330c6854cdbb39b4097c1943020789c3ae44d
➜  ~ docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED              STATUS                                  PORTS                                       NAMES
b4eab7bb0164   nginx           "/docker-entrypoint...."   18 seconds ago       Created

创建后的容器处于"created"状态,可通过 docker ps -a 查看。若要启动此容器,使用 docker start 加上容器ID或名称。

通过start启动刚才创建的nginx容器。通过docker start命令接创建的nginx容器id即可启动,如果创建时指定了名称,也可以使用名称启动。

bash 复制代码
➜  ~ docker start b4eab7bb
b4e
➜  ~ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                        PORTS
                          NAMES
b4eab7bb0164   nginx          "/docker-entrypoint...."   3 minutes ago    Up 2 seconds                  80/tcp

可以看到,这个容器创建于3分钟前,启动于2秒前。docker ps仅显示运行中的容器。

**创建并运行容器:**更常用的做法是使用 docker run 一次性完成容器的创建与启动过程,同时可指定端口映射、容器名称等额外参数。

例如,在终端中执行docker run -d -p 8080:80 --name firstdemo nginx,此命令会在后台(-d)运行一个名为 "firstdemo" 的Nginx容器,其宿主机的8080端口映射至容器内的80端口。

执行docker run时,镜像不存在本地时,会自动从Docker Hub中下载,完成后启动容器。

推荐使用run命令创建容器,可以方便的绑定端口、存储卷、环境变量等。

**停止容器:**可以让运行中的容器停止。使用命令docker rm [容器ID或名称]

arduino 复制代码
➜  ~ docker stop b4eab7bb0164
b4eab7bb0164

**删除容器:**当我们有不需要运行的容器的时候,同样可以删除它。使用docker stop [容器ID或名称]命令进行删除操作。

arduino 复制代码
➜  ~ docker rm b4eab7bb0164
Error response from daemon: cannot remove container "/gallant_dirac": container is running: stop the container before removing or force remove

当删除一个正在运行的容器时,会提示你要删除容器前先停止运行或强制删除。

arduino 复制代码
➜  ~ docker stop b4eab7bb0164
b4eab7bb0164
➜  ~ docker rm b4eab7bb0164
b4eab7bb0164

使用docker stop b4eab7bb0164先停止容器,接着执行刚刚的删除操作。

arduino 复制代码
➜  ~ docker run -d -p 8080:80  nginx
4ed7364914f6661f303d57e419742cdbae95e57d8a8531c5898f4129e01bd64b
➜  ~ docker rm 4ed7364914
Error response from daemon: cannot remove container "/eager_mayer": container is running: stop the container before removing or force remove
➜  ~ docker rm -f 4ed7364914
4ed7364914

确保容器确实不在使用,可以增加-f(--force),进行强制删除操作。

2. 容器的生命周期管理

容器的生命周期经历了从创建(created)、运行(running)、停止(stopped)、暂停(pause)到删除(deleted)等五个主要状态。分别对应 docker createdocker run/start/unpause/restartdocker stopdocker pausedocker rm 等命令的操作结果。

created 初建状态 ,使用docker create,可以使容器转化为created状态。

running 运行状态 ,使用docker run (运行并创建)、docker start(初建)docker unpause(从暂停恢复运行)docker restart(重启),转化为运行状态。

stopped 停止状态 ,使用docker stop可以时运行中的容器转化到stopped状态。

paused 暂停状态 ,使用docker pause可以时运行中的容器转化到paused状态。

deleted 删除状态 ,使用docker rm可以时运行中的容器转化到deleted状态。

3. 容器网络和端口映射

Docker提供bridge(默认)、host和none三种网络模式。默认情况下,容器使用名为"bridge"的虚拟网卡与宿主机通信。

sql 复制代码
➜  ~ docker network ls
NETWORK ID     NAME                DRIVER    SCOPE
1fd47386d313   bridge              bridge    local
7e0917a50f1a   host                host      local
127811d79028   none                null      local

bridge网卡(默认) :通过 -p-P 参数在宿主机和容器之间建立端口映射关系。-p [宿主机端口:容器端口] 明确指定映射端口,而 -P 则会自动映射容器公开的所有端口,并由Docker随机分配宿主机端口。

docker run -d -p 8080:80 nginx该命令指定宿主机8080与容器内80端口映射。

上述命令将容器内80端口映射到宿主机的8080端口。而使用 -P 参数时,Docker会自动为容器的每个开放端口在宿主机上分配可用端口。

bash 复制代码
➜  ~ docker run -d -P  nginx
d326696848f057270a2b897ad9bbc828417790615595afa083f07af500eec6e3
➜  ~ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS
                    NAMES
d326696848f0   nginx          "/docker-entrypoint...."   8 seconds ago        Up 8 seconds        0.0.0.0:32768->80/tcp, :::32768->80/tcp     infallible_yonath

使用docker network inspect [network id]可以查看显卡的详细信息。

host网卡:对于host网络模式,容器共享宿主机的网络栈,可以直接使用localhost及相应端口访问服务

none:容器将不具备网络功能,不能通过网络与其他容器或宿主机通信。

忍不住要加个关注!不是我吹,但你会后悔没关注的!

相关推荐
海岛日记2 小时前
centos一键卸载docker脚本
linux·docker·centos
小袁搬码3 小时前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
qq_312920114 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
踏雪Vernon4 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
条纹布鲁斯5 小时前
dockerdsktop修改安装路径/k8s部署wordpress和ubuntu
docker·kubernetes
工业3D_大熊7 小时前
3D可视化引擎HOOPS Luminate场景图详解:形状的创建、销毁与管理
java·c++·3d·docker·c#·制造·数据可视化
szc17677 小时前
docker 相关命令
java·docker·jenkins
CP-DD7 小时前
Docker 容器化开发 应用
运维·docker·容器
Stark-C7 小时前
万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统
macos·docker·策略模式
微信-since811927 小时前
[ruby on rails] 安装docker
后端·docker·ruby on rails