DevOps
docker
docker
  • 基础知识
    • 概述
      • 核心概念
      • Docker 引擎
      • 基本架构
      • 联合文件系统
      • 网络虚拟化
    • 安装
      • 安装Docker Engine
      • 以非 root 用户使用 Docker
      • 配置 Docker 服务
    • 3. Docker镜像
      • 3.1 获取镜像(pull)
      • 3.2 查看镜像信息
        • images
        • tag
        • inspect
        • history
      • 3.3 搜寻镜像(search)
      • 3.4 删除镜像(rmi)
      • 3.5 清理镜像(prune)
      • 3.6 创建镜像
        • 基于已有容器创建
        • 基于本地模板导入
        • 基于Dockerfile创建
      • 3.7 导出镜像(save)
      • 3.8 导入镜像(load)
      • 3.9 上传镜像(push)
    • 4. Docker容器
      • 4.1 新建容器(create)
      • 4.2 启动容器(start)
      • 4.3 新建并启动容器(run)
      • 4.4 查看容器输出(logs)
      • 4.5 暂停容器(pause)
      • 4.6 恢复容器(unpause)
      • 4.7 停止止容器(stop)
      • 4.8 清除容器(prune)
      • 4.9 重启容器(restart)
      • 4.10 进入容器
      • 4.11 删除容器(rm)
      • 4.12 导出容器(export)
      • 4.13 导入容器(import)
      • 4.14 查看容器详情(inspect)
      • 4.15 查看容器内进程(top)
      • 4.16 查看统计信息(stats)
      • 4.17 复制文件(cp)
      • 4.18 查看变更(diff)
      • 4.19 更新配置(update)
    • 5. Docker仓库
      • 5.1 Docker Hub
      • 5.2 本地私有仓库
        • 使用HTTPS协议
        • 添加用户认证
        • 使用push时遇到的一些坑
    • 6. Docker数据管理
      • 6.1 数据卷
      • 6.2 数据卷容器
      • 6.3 利用数据卷容器来迁移数据
    • 7. 端口映射与容器互联
      • 7.1 端口映射
      • 7.2 容器互联
    • 8. Dockerfile
      • 8.1 基本结构
      • 8.2 指令说明
        • ARG
        • FROM
        • LABEL
        • EXPOSE
        • ENV
        • ENTRYPOINT
        • VOLUME
        • USER
        • WORKDIR
        • ONBUILD
        • STOPSIGNAL
        • HEALTHCHECK
        • SHELL
        • RUN
        • CMD
        • ADD
        • COPY
      • 8.3 创建镜像
      • 8.4 最佳实践
    • 9. Compose
      • 9.1 安装
      • 9.2 Compose文件
        • 9.2.1 services
        • 9.2.2 networks
        • 9.2.3 多文件Compose
          • Extend
          • Merge
          • Include
        • 9.2.4 锚点和别名
      • 9.3 Compose命令
      • 9.4 实例
  • 中间件安装
    • 安装tomcat
    • 安装redis
      • 单机
      • Cluster集群
    • 安装mysql
    • 安装ssh服务
      • 基于commit命令创建
      • 使用Dockerfile创建
    • 安装Apache
    • 安装ngnix
  • 操作系统镜像
    • BusyBox
    • ☑️Alpine
    • Debian/Ubuntu
    • CentOS/Fedora
  • Tips
    • docker 引擎开启远程访问
    • dockerfile-maven-plugin
    • IDEA 连接远程 docker
Powered by GitBook
On this page
  • 1. 交互模式
  • 2. 守护模式

Was this helpful?

Edit on GitHub
  1. 基础知识
  2. 4. Docker容器

4.3 新建并启动容器(run)

docker [container] run等价于先执行docker [container] create命令,再执行docker [container] start命令。例如,下面的命令输出一个“Hello World”,之后容器自动终止:

$ docker run ubuntu:latest /bin/echo "hello world"
hello world

当利用docker [container] run来创建并启动容器时,Docker在后台运行的标准操作包括:

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载;

  2. 利用镜像创建一个容器,并启动该容器;

  3. 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;

  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;

  5. 从网桥的地址池配置一个IP地址给容器;

  6. 执行用户指定的应用程序;

  7. 执行完毕后容器被自动终止。

1. 交互模式

下面的命令启动一个bash终端,允许用户进行交互:

$ docker run -it ubuntu:latest /bin/bash
root@7b514d55f51b:/# pwd
/
root@7b514d55f51b:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@7b514d55f51b:/# ps
   PID TTY          TIME CMD
     1 pts/0    00:00:00 bash
    10 pts/0    00:00:00 ps

其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开。用户可以按Ctrl+d或输入exit命令来退出容器。

对于所创建的bash容器,当用户使用exit命令退出bash进程之后,容器也会自动退出。这是因为对于容器来说,当其中的应用退出后,容器的使命完成,也就没有继续运行的必要了。

可以使用docker container wait CONTAINER [CONTAINER...]命令来等待容器退出,并打印退出返回结果。

2. 守护模式

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

$ docker run -d ubuntu:latest \
/bin/sh -c "while true; do echo hello world; sleep 1; done"
004bf1f645088cf68343b5be852116fc7bc681de31d4c8bee3f3884c497ecf88

$ docker ps
CONTAINER ID   IMAGE           COMMAND                   CREATED          STATUS          PORTS     NAMES
004bf1f64508   ubuntu:latest   "/bin/sh -c 'while t…"   5 seconds ago    Up 2 seconds              xenodochial_thompson

Previous4.2 启动容器(start)Next4.4 查看容器输出(logs)

Last updated 1 year ago

Was this helpful?