容器
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
最后更新于
这有帮助吗?