• 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
    

    可以看到容器已经被删除
    在这里插入图片描述

  • 相关阅读:
    【Kubeadm搭建K8S集群】
    netcore基于asp.net的校园二手闲置商品交易系统
    GNSS全球卫星导航系统相关技术
    MQ - 38 Serverless : 基于Serverless架构实现流式数据处理
    UG客户端配置许可模块绑定包
    One bite of Stream(5)
    net.sf.json对象转jsonobject
    【Linux进程】进程状态---进程僵尸与孤儿
    自动控制原理5.4---稳定裕度
    -完全数-
  • 原文地址:https://blog.csdn.net/lwxvgdv/article/details/139380608