1. 创建一个新的容器并运行

    docker run [OPTIONS] IMAGE [COMMAND] [AGR…]“
    OPTIONS说明:
    —name=”容器的新名字”:为容器指定一个名称
    -d:后台运行容器,并返回容器ID,也即启动守护式容器
    -i: 以交互模式运行容器,通常和-t同时使用
    -t: 为容器重新分配一个伪输入终端,通常与-i同时使用
    -P:随机端口映射
    -p:指定端口映射,有以下四种格式
    ip:hostPort:containerPort
    ip::containerPort
    hostPort:containerPort
    containerPort
    示例: docker run -it xxxxximageid
    COAMMD说明:需要在容器内执行的命令

    -d: 守护式启动使用docker ps是查询不到的,容器已经退出
    说明:Docker容器后台运行,就必须有一个前台进程
    容器运行的命令如果不是哪些一直挂起的命令(比如运行top,tail),就会自动退出。
    这个是docker的机制问题,比如你的web容器,以nginx为例,正常情况下启动服务只需要启动响应的service即可 例如service nginx start
    但是这样做nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为它觉得没事可做了。
    解决方案:将运行的程序以前台进程的形式运行。

    1. 列出当前正在运行的容器

    docker ps [OPTIONS]
    OPTIONS说明:
    -a:列出当前所有正在运行的容器+历史上运行过的
    -l:显示最近创建的容器
    -n:显示最近n个创建的容器
    -q:静默模式,只显示容器编号
    —no-trunc:不截断输出
    示例:
    docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    e0b35196342e 5d0da3dc9764 “/bin/bash” 10 seconds ago Up 9 seconds magical_euclid
    启动的时候没有指定—name 使用了默认的”magical_euclid”

    1. 退出容器

    exit 彻底退出容器
    ctrl+p+q 不停止容器退出

    1. 容器操作

    4.1 启动某个容器
    docker start Container
    示例:
    docker start xxxContainerId或容器名称
    4.2 重启某个容器
    docker restart Container
    4.3 停止容器
    docker stop Container
    4.4 强制停止容器
    docker kill Container
    4.5 删除已停止的容器
    docker rm [OPTIONS] Container rmi是删除镜像
    OPTIONS说明:
    -f:强制删除
    可批量删除,示例:docker rm -f $(docker ps -a -q)
    4.6 查看容器日志:
    docker logs [OPTIONS] ContainerId
    OPTIONS说明:
    -t:加入时间戳
    -f:跟随最新的日志打印
    —tail: 显示最后多少条
    4.7 查看容器内运行的进程
    docker top ContainerId
    4.8 查看容器内部细节
    docker inspect ContainerId
    返回一个JSON字符串,包含了容器所有的结构信息
    4.9 进入正在运行的容器并以命令行交互
    docker exec -it ContainerId bashShell
    docker attach ContainerId 重新进入
    区别:attach直接进入容器启动命令的终端,不会启动新的进程,exec是在容器中打开新的终端,并且可以启动新的进程
    tip:docker exec -it ContainerId /bin/bash 进入终端时,如果没有加-i是没法执行交互命令的,但是可以进入到终端。
    4.10 从容器内拷贝文件到主机上
    docker cp ContainerId:容器内路径 目的主机路径