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

文章目录


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

可以看到容器已经被删除

相关推荐
weixin_471525782 小时前
【gdb/sqlite3移植/mqtt】
linux·运维·服务器
稚辉君.MCA_P8_Java4 小时前
JVM第二课:一文讲透运行时数据区
jvm·数据库·后端·容器
繁花与尘埃5 小时前
HTML5简介与基本骨架(本文为个人学习笔记,内容整理自哔哩哔哩UP主【非学者勿扰】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
笔记·学习·html5
Guheyunyi6 小时前
消防管理系统如何重构现代空间防御体系
大数据·运维·人工智能·安全·信息可视化·重构
我是好小孩6 小时前
【Android】六大设计原则
android·java·运维·服务器·设计模式
孙同学要努力6 小时前
《Linux篇》进程状态——浅度、深度睡眠状态、僵尸状态、运行状态
linux·运维
Rock_yzh6 小时前
AI学习日记——卷积神经网络(CNN):完整实现与可视化分析
人工智能·python·深度学习·神经网络·学习·cnn
jieyu11197 小时前
Linux Rootkit 详解
linux·运维·系统安全
宁檬精7 小时前
运维面试准备——综合篇(一)
linux·运维·服务器
洛阳纸贵Coco.Leo.YI7 小时前
10分钟在Windows11下Ubuntu内安装docker-Version28.51
linux·ubuntu·docker