容器

博客作者:联系请点击,搬运不易,希望请作者喝咖啡,可以点击联系博客作者

Docker是一个开源的容器化平台,允许开发人员在轻量级的容器中打包和运行应用程序。

以下是一些常用的Docker容器操作命令:

创建容器(create)

docker create :创建一个新的容器但不启动它;如果本地镜像中有容器,则直接创建,如果本地没有镜像则会去官方下载相应的镜像。

语法:

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

示例:

使用docker镜像ubuntu:20.04创建一个容器,并将容器命名为myubuntu

docker create  --name myubuntu  ubuntu:20.04

查看已创建的容器(ps,ls,list)

docker ps : 列出容器;"ls", "ps", "list"均是别名信息。

语法:

docker ps [OPTIONS]
  • OPTIONS说明:

    • -a : 显示所有的容器,包括未运行的。

    • -f : 根据条件过滤显示的内容。

    • --format : 指定返回值的模板文件。

    • -l : 显示最近创建的容器。

    • -n : 列出最近创建的n个容器。

    • --no-trunc : 不截断输出。

    • -q : 静默模式,只显示容器编号。

    • -s : 显示总的文件大小。

示例:

列出所有在运行的容器信息。

runoob@runoob:~$ docker ps
CONTAINER ID   IMAGE          COMMAND                ...  PORTS                    NAMES
09b93464c2f7   nginx:latest   "nginx -g 'daemon off" ...  80/tcp, 443/tcp          myrunoob
96f7f14e99ab   mysql:5.6      "docker-entrypoint.sh" ...  0.0.0.0:3306->3306/tcp   mymysql
  • 输出详情介绍:

    • CONTAINER ID: 容器 ID。

    • IMAGE: 使用的镜像。

    • COMMAND: 容器的初始化命令,该命令和镜像的默认设置有关,当然,在启动容器时我们时可以修改的。

    • CREATED: 创建的时间。

    • STATUS: 当前的状态。

    • PORTS: 对外暴露的端口。

    • NAMES: 容器的名称,若不指定,则docker引擎会自动帮咱们随机生成一个容器名称。

  • STATUS状态有七种

    • created(已创建)

    • restarting(重启中)

    • running(运行中)

    • removing(迁移中)

    • paused(暂停)

    • exited(停止)

    • dead(死亡)

运行一个已创建的容器(start),停止一个正在运行的容器(stop),重启容器(restart)

  • docker start :启动一个或多个已经被停止的容器

  • docker stop :停止一个运行中的容器

  • docker restart :重启容器

语法:

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]

示例:

启动已被停止的容器myrunoob

docker start myrunoob

停止运行中的容器myrunoob

docker stop myrunoob

重启容器myrunoob

docker restart myrunoob

创建并启动一个容器(run,等效于"create + start")

docker run : 创建一个新的容器并运行一个命令

语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 常用OPTIONS说明:

    • -i :即"interactive",表示交互式的类型。通常和"-t"选项搭配使用。

    • -t :即"terminal",表示启动一个终端。通常和"-i"选项搭配使用。

    • -d :让容器在后台运行,默认情况下,容器是在前台(当前终端)运行的,这意味着会阻塞当前终端。

    • --name :创建容器时指定名称。

    • -P :随机端口映射,容器内部端口 随机 映射到主机的端口

    • -p :指定端口映射,格式为:主机(宿主)端口:容器端口

示例:

使用docker镜像ubuntu:20.04以后台模式启动一个容器,并将容器命名为myubuntu。
docker run --name myubuntu -d ubuntu:20.04 

使用镜像ubuntu:20.04以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d ubuntu:20.04

使用镜像 ubuntu:20.04,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d ubuntu:20.04

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

使用镜像ubuntu:20.04以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it ubuntu:20.04 /bin/bash

删除容器(rm)

docker rm :删除一个或多个容器。

语法

docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • OPTIONS说明:

    • -f : 通过 SIGKILL 信号强制删除一个运行中的容器。

    • -l : 移除容器间的网络连接,而非容器本身。

    • -v : 删除与容器关联的卷。

示例:

强制删除容器 db01、db02:docker rm -f db01 db02
移除容器 nginx01 对容器 db01 的连接,连接名 db:docker rm -l db 
删除容器 nginx01, 并删除容器挂载的数据卷:docker rm -v nginx01
删除所有已经停止的容器:docker rm $(docker ps -a -q)

6.显式正在运行的容器中进程信息(top)

docker top :查看容器中运行的进程信息,支持 ps 命令参数。

语法:

docker top [OPTIONS] CONTAINER [ps OPTIONS]

容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。

示例:

查看容器mymysql的进程信息。
runoob@runoob:~/mysql$ docker top mymysql
UID    PID    PPID    C      STIME   TTY  TIME       CMD
999    40347  40331   18     00:58   ?    00:00:02   mysqld

查看所有运行容器的进程信息。
for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

获取容器的启动日志(logs)

语法:

docker logs [OPTIONS] CONTAINER
  • OPTIONS说明:

    • -f : 跟踪日志输出

    • --since : 显示某个开始时间的所有日志

    • -t : 显示时间戳

    • --tail : 仅列出最新N条容器日志

示例:

跟踪查看容器mynginx的日志输出。

docker logs -f mynginx

查看容器mynginx从2022年10月1日后的最新10条日志。

docker logs --since="2022-10-01" --tail=10 mynginx

最后更新于