docker容器操作

Docker容器

容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态

如何理解:类->实例,镜像->容器

命令

创建容器(重点)

docker create -it centos:latest

docker create -it --name tomcat01 centos:latest

注1:命令说明

create:关键字

centos:latest:即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像,

不存在就从公有仓库下载

-it:是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端

--name:指定生成的容器的名字,允许空,如果不指定会自动生成

注2:此时,通过如下命令,可以查看到刚刚创建的容器

$ docker ps - a

注3:create命令新建的容器处于停止状态,可以使用start命令来启动它

$ docker start 容器ID

注4:docker容器状态可参考"images/docker容器状态转换图.png"(重点~~~重点~~~重点~~~)

查看当前正在运行的容器

docker ps

加上-a

查看所有容器

启动、停止、重启容器命令

docker start 容器ID或name

docker stop 容器ID或name

docker restart 容器ID或name

删除容器

docker rm 容器ID/容器名称

注1:主要支持的选项包括

-f, --force=false 是否强行终止并删除一个运行中的容器

-1, --link=false :删除容器的连接 ,但保留容器;

-v, --volumes=false :删除容器挂载的数据卷

创建\启动\进入容器(run=create+start)

新建->启动->进入容器

docker run -it centos:latest /bin/bash

指定了端口号

docker run -it -p 7001:8001 centos:latest /bin/bash

使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口

docker run -it -P --name tomcat03 centos:latest /bin/bash

此命令没有进入容器,可以之后再进入

更多的时候,需要让 Docker 容器在后台以守护态( Daemonized )形式运行 此时,可以通过添加-d参数来实现:

docker run -it -d --name webapp centos:latest

docker exec -it webapp /bin/bash

参数说明:

-p:端口映射,格式为:主机(宿主)端口:容器端口

-P: 注意是大写P,使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口

-d:后台运行模式

--name:容器的名字

退出容器

退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】

如果不想继续运行:按【ctrl+d】或输入exit

宿主机和docker容器之间复制文件

docker cp 宿主机绝对路径 容器id:路径

查看Docker容器内部信息

进入容器内部获取信息

docker exec -it 容器ID/容器NAME /bin/bash

如果此时已进入容器内部,可分别执行hostname、ip addr、env这三个命令可以获取相关信息

hostname

ip addr

env

在宿主机,执行docker exec命令

获取容器的hostname:docker exec 容器ID/容器NAME hostname

获取容器ip地址:docker exec 容器ID/容器NAME ip addr

获取容器环境变量:docker exec 容器ID/容器NAME env

在宿主机,使用docker inspect命令

推荐使用docker inspect来获取信息,这个命令会返回一个json字符串,里面以key-value的格式准备了该容器相关的信息,

内容十分丰富,可以一次性取得全部内容,也可以返回指定key对应的信息

docker inspect 容器ID/容器NAME

如果我们只对其中的一些感兴趣,例如hostname、ip地址、环境变量,该如何查看呢

查看数据所在节点,根据节点位置编写命令,例如:

hostname位于Config.Hostname这个节点位置,所以执行命令docker inspect -f {{.Config.Hostname}} tomcat001即可获取到hostname

案例(centos)

下载镜像

docker pull centos

创建启动容器

docker run -it centos

加上 /bin/bash还会运行容器

退出容器

exit

查看镜像

docker images

查看运行容器

docker ps

根据id删除容器

docker rm

再创建启动容器,这次给名字,版本

docker run -itd --name c1 centos:latest

进入c1运行容器:

docker exec -it c1 bash

退出,但是不会停止运行

exit

再创建运行并指定端口

docker run -itd --name n1 -p 80:80 nginx

访问IP地址如下图

相关推荐
Java陈序员9 小时前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
爱吃橘子橙子柚子1 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield2 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽2 天前
win10下运行Start Broker and Proxy报错解决
docker
舒一笑3 天前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData3 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户13573999256603 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h3 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔3 天前
通过 Docker 创建开发环境
docker·开发环境