新建容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

options

  • —name=”容器新名字”:为容器指定名字。
  • -d:后台运行容器并返回容器ID,即启动守护式容器(后台运行)。
  • -i:以交互模式运行容器,通常与-t同时使用。
  • -t:为容器重新分配一个伪输入终端,通常与-i同时使用。
  • -P:随机端口映射,大写P
  • -p:指定端口映射,小写P | 参数 | 说明 | | —- | —- | | -p hostPort:containerPort | 端口映射 -p 8080:80 | | -p ip:hostPort:containerPort | 配置监听地址 -p 10.0.0.100:8080:80 | | -p ip::containerPort | 随机分配端口 -p 10.0.0.100::80 | | -p hostPort:containerPort:upd | 指定协议 -p 8080:80:tcp | | -p 81:80 -p 443:443 | 指定多个 |

启动交互式容器

进入容器bash交互,退出时要注意exit和ctrl+pq的区别。
docker run -it ba6acccedd29 bash

  • ba6acccedd29:镜像id,也可以用镜像名称
  • bash:可缺省,也可以指定(如/bin/bash)

    启动守护式容器

    若容器中有守护进程,不需要开启终端,只需要它在后台运行,可以通过-d指定该容器进入后台运行模式。
    注意:若容器中既无守护进程又无前台进程(bash),docker会将其关闭。
    例如使用docker run -d ubuntu,再用docker ps查看会发现该容器并不在运行状态。

    查看容器

    docker ps [OPTIONS]
    不加参数执行docker ps会显示运行中的容器。

    options

  • -a:列出所有容器,包括运行中的和不在运行中的。

  • -l:列出最近创建的容器。
  • -n:列出最近n个创建的容器。
  • -q:只显示容器编号

    案例

    1. docker ps
    2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    3. a7e35e46a7a7 ubuntu "/bin/bash" 6 seconds ago Up 5 seconds wizardly_keldysh
    4. 682740e19660 cloudnas/clouddrive "/start.sh --user wi…" 22 hours ago Up 6 hours clouddrive

    查看指定容器

    查看日志

    docker logs 容器id

    查看进程

    docker top 容器id

    查看内部细节

    docker inspect 容器id

    退出容器

    exit

    在容器命令行状态下输入exit(或按ctrl+d)退出容器。
    注意:退出时若该容器后台无守护进程,那么它会停止运行。

    ctrl+p+q

    在容器命令行状态下依次按ctrl+p和ctrl+q可以退出容器且保留bash,容器不会停止运行。

    重启容器

    docker restart [OPTIONS] CONTAINER [CONTAINER...]

    options

  • -t int:指定秒数后停止容器,默认是10秒

    停止容器

    docker stop [OPTIONS] CONTAINER [CONTAINER...]

    options

  • -t int:指定秒数后停止容器,默认是10秒

    强制停止容器

    docker kill [OPTIONS] CONTAINER [CONTAINER…]

    options

  • -s:给容器发送kill信号

    启动已停止的容器

    docker start [OPTIONS] CONTAINER [CONTAINER...]

    options

  • -i:进入容器命令行

    进入运行中的容器

    exec

    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    注意事项

    在容器中打开新的终端,并启动新的bash。用exit退出不会导致容器停止。

    案例

    docker exec -it 335fcc77fe93 bash

    attach

    docker attach 容器id

    注意事项

    直接进入容器启动命令的终端,不开启新的bash。用exit退出会导致容器停止。

    推荐使用exec

    进入容器后退出时,建议要用docker ps检查它的运行状态。

    删除容器

    docker rm [OPTIONS] CONTAINER [CONTAINER...]
    不可删除正在运行中的容器,除非加-f强制删除。

    options

  • -f:强制删除

  • -l:删除指定链接
  • -v:删除与容器关联的匿名卷

    删除多个容器

    docker rm 容器1 容器2

    删除全部容器

    docker rm $(docker ps -q)

    导出容器

    export export 容器ID > 文件名.tar
    将容器中的内容导出到tar文件,做备份。

    案例

    docker export 1d1f5bbd10f8 > ubuntu.tar
    

    导入备份到镜像

    cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
    将容器备份tar文件导入到指定镜像,再运行该镜像即可还原之前的备份。

    案例

    cat ubuntu.tar | docker import - windf/ubuntu
    docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    windf/ubuntu/1      latest              991bf4060396        About a minute ago   72.8MB
    redis               latest              7614ae9453d1        5 months ago         113MB
    ubuntu              latest              ba6acccedd29        7 months ago         72.8MB
    

    容器与主机相互拷贝文件

    从容器拷贝文件到主机

    docker cp 容器ID:容器内路径 目的主机路径

    案例

    docker cp 1d1f5bbd10f8:/tmp/a.txt ~/
    

    从主机拷贝文件到容器

    docker cp 主机路径 目的容器ID:容器内路径

    案例

    docker cp ~/a.txt 1d1f5bbd10f8:/tmp/