docker学习--最详细的docker run 各子命令解释与应用

简介: `docker run` 是 Docker 中用于启动容器的基本命令。常用子命令包括 `-i`(交互模式)、`-t`(分配终端)、`-d`(后台运行)、`-p`(端口映射)、`--name`(指定容器名)。例如,`docker run -it nginx:1.20 /bin/bash` 可以创建并进入交互式容器。使用 `-d` 可在后台运行容器,`-p` 可将容器端口映射到主机端口,`--name` 则用于自定义容器名称以便管理。

docker run

容器运行命令
docker run

常见的子命令及其含义
-i 交互式,和-t一起使用
-t 打开一个终端
-d 后台运行
-p/-P 暴露容器中的服务端口
--name 指定容器名称

这个以后单开一章讲述先不讲
-v 数据卷挂载
--net 指定运行的网络

可以组合使用

应用

注:每个命令应用之前都会把之前做的容器删除,后面就不老说了

docker run -it

简单来说就是创建并进入容器
注: -it 需要在后面加上shell环境

示例
以nginx:1.20举例

[root@vm1 ~]# docker run -it nginx:1.20 /bin/bash
root@427caaf09c72:/# ls

可以看到直接进入容器内了

注意: 用docker run -it 进入容器不建议使用exit退出
因为会导致容器关闭

root@427caaf09c72:/# exit
[root@vm1 ~]# docker ps -a

可以看到容器已经关闭了(Exited)

那怎样才能退出容器而不用容器关闭呢

我们可以使用docker exec -it 命令进去,就可以使用exit退出而不导致容器关闭了
或者按住ctrl + p + q

先试试docker exec -it

[root@vm1 ~]# docker start 427 
427
[root@vm1 ~]# docker  exec -it 427 /bin/bash
root@427caaf09c72:/# exit
[root@vm1 ~]# docker ps -a

可以看到容器还在运行 (Up)

试试ctrl + p + q (三个要依次按,不要松手)

先用docker rm -f 删除刚刚的容器

[root@vm1 ~]# docker rm -f 427
427

docker run 创建一个新容器

这里是看不见的

[root@vm1 ~]# docker run -it nginx:1.20 /bin/bash
root@a8e8b7870cd6:/# [root@vm1 ~]# 
[root@vm1 ~]# 
[root@vm1 ~]# docker ps -a

可以看到容器依然在运行

docker run -d

创建并运行但不会进入到容器内
不需要shell环境
不能和-it一起用

[root@vm1 ~]# docker run -d nginx:1.20 
3c17fc29018639c99c9ad90fc10b1f8659f90e1461a7b09fbf75ae631bf193f4
[root@vm1 ~]# docker ps -a

可以看到容器已经运行起来了

-p

映射容器内的端口到宿主机端口(可以指定)
就是能让外界访问访问到容器内
多个容器不能映射同一个宿主机端口
创建会直接关闭容器

格式
-p 宿主机端口:容器端口

[root@vm1 ~]# docker run -d -p 80:80 nginx:1.20 
4c7d19a59e691f546cfa62118582bd8d5f6026c74a7246a94577c4332e274a15

可以看到访问到了
如果没有-p就访问不到
192.168.10.11是本机ip,浏览器默认访问80端口

-P

映射容器内的端口到宿主机端口(不可以指定)
不建议使用

[root@vm1 ~]# docker run -d -P nginx:1.20
adc5a6f3693b271c88c315feeb47db9df3a948d801b45e4edaa0095e977cc549
[root@vm1 ~]# docker ps -a

可以看到随机的端口是49153

访问一下
访问到了

--name

容器创建时会自动创建一个编号,非常的长且不好记
而自定义名称可以让我们更好的管理容器
虽然后面一般用的容器编排工具

[root@vm1 ~]# docker run -d --name nginx nginx:1.20
64f73e759e55ca7916c9ceb1641f85d7f1b39259f16c5e0a9af36064a0090e10
[root@vm1 ~]# docker ps -a

注:自定义名称容器依然可以通过编号管理

可以通过名称删除容器

[root@vm1 ~]# docker rm -f nginx
nginx
[root@vm1 ~]# docker ps -a

可以看到容器已经被删除

相关文章
|
6月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1027 108
|
4月前
|
存储 Java Linux
【Docker】(2)还在浏览网页寻找Docker命令?本文全面列举与使用Docker里的各个命令!想要什么命令直接从本文拿!
docker有着比VM更少的抽象层 由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源 因此在CPU、内存利用率上Docker将会在效率上有明显优势 docker利用的时宿主机的内核,而不需要加载操作系统OS内核 当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核 进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程时分钟级别的。 而Docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个Docker容器只需
482 124
|
4月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
636 5
|
7月前
|
安全 Unix Linux
Docker中授权普通用户使用docker命令以及解决无权限访问/var/run/docker.sock错误。
通过上述步骤,可以有效解决普通用户无法使用Docker命令的问题,同时处理 `/var/run/docker.sock`权限错误。这样的设置不仅方便用户使用Docker提供的各项服务,同时还能保护系统的安全性。在进行此类配置更改时,请确保理解每一步骤的作用及潜在的安全风险,尤其是在修改文件权限时。在实际的操作中,始终应该努力保持系统的最低必要权限,避免过度放宽权限,这是保障系统安全的一个重要方针。
2293 75
|
5月前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
287 13
|
7月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
507 59
|
7月前
|
缓存 Java Docker
如何对应用代码进行优化以提高在Docker容器中的性能?
如何对应用代码进行优化以提高在Docker容器中的性能?
377 1
|
6月前
|
运维 Cloud Native Docker
Docker:重塑现代应用交付的基石
Docker:重塑现代应用交付的基石
|
8月前
|
安全 Java Docker
Docker 部署 Java 应用实战指南与长尾优化方案
本文详细介绍了Docker容器化部署Java应用的最佳实践。首先阐述了采用多阶段构建和精简JRE的镜像优化技术,可将镜像体积减少60%。其次讲解了资源配置、健康检查、启动优化等容器化关键配置,并演示了Spring Boot微服务的多模块构建与Docker Compose编排方案。最后深入探讨了Kubernetes生产部署、监控日志集成、灰度发布策略以及性能调优和安全加固措施,为Java应用的容器化部署提供了完整的解决方案指南。文章还包含大量可落地的代码示例,涵盖从基础到高级的生产环境实践。
483 3

热门文章

最新文章