04 Docker常用容器命令

目录

1. docker run

Ⅰ 启动交互式容器

@ 退出交互模式:

Ⅱ 启动守护式容器

2. docker ps

3. 容器其他启停操作

4. docker rm 删除容器

5. docker logs

6. docker top

7. docker inspect

8. 进入正在运行的容器

9. docker cp

10. 导入和导出容器

11. docker commit将容器生成新镜像

@ 所有命令示意图


1. docker run

新建启动容器

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

常用的参数:

  • --name:为容器指定一个名称
  • -d:后台运行容器并返回容器ID,也即启动守护式容器
  • -i:以交互模式(interactive)运行容器,通常与-t同时使用
  • -t:为容器重新分配一个伪输入终端(tty),通常与-i同时使用。也即启动交互式容器(前台有伪终端,等待交互)
  • -e:为容器添加环境变量
  • -P:随机端口映射。将容器内暴露的所有端口映射到宿主机随机端口
  • -p:指定端口映射

-p指定端口映射的几种不同形式:

  • -p hostPort:containerPort:端口映射,例如-p 8080:80
  • -p ip:hostPort:containerPort:配置监听地址,例如 -p 10.0.0.1:8080:80
  • -p ip::containerPort:随机分配端口,例如 -p 10.0.0.1::80
  • -p hostPort1:containerPort1 -p hostPort2:containerPort2:指定多个端口映射,例如-p 8080:80 -p 8888:3306

Ⅰ 启动交互式容器

以交互方式启动ubuntu镜像

# -i 交互模式
# -t 分配一个伪输入终端tty
# ubuntu 镜像名称
# /bin/bash(或者bash) shell交互的接口
docker run -it ubuntu /bin/bash

@ 退出交互模式:

方式1:

# 在交互shell中exit即可退回宿主机
exit;

方式2:使用快捷键ctrl + P + Q

方式1 退出后,容器会停止;

方式2 退出后容器依然正在运行。

Ⅱ 启动守护式容器

大部分情况下,我们系统docker容器服务时在后台运行的,可以通过-d指定容器的后台运行模式:

docker run -d 容器名

注意事项:

如果使用docker run -d ubuntu尝试启动守护式的ubuntu,会发现容器启动后就自动退出了。

因为Docker容器如果在后台运行,就必须要有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(例如toptail),就会自动退出。

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start 但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.

最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断

2. docker ps

列出正在运行的容器

列出所有正在运行的容器:

docker ps [OPTIONS]

常用参数:

  • -a:列出当前所有正在运行的容器+历史上运行过的容器
  • -l:显示最近创建的容器
  • -n:显示最近n个创建的容器
  • -q:静默模式,只显示容器编号

3. 容器其他启停操作

启动已经停止的容器	docker start 容器ID或容器名

重启容器 docker restart 容器ID或容器名

停止容器  docker stop 容器ID或容器名

强制停止容器   docker kill 容器ID或容器名

4. docker rm 删除容器

删除已经停止的容器:

docker rm 容器ID或容器名

删除容器是 docker rm,删除镜像是 docker rmi

强制删除正在运行的容器:

docker rm -f 容器ID或容器名

一次删除多个容器实例:

docker rm -f ${docker ps -a -q}

# 或者
docker ps -a -q | xargs docker rm 
  #通过 | 管道传输命令执行结果,

5. docker logs

查看容器日志

docker logs 容器ID或容器名

6. docker top

查看容器内运行的进程

docker top 容器ID或容器名

7. docker inspect

查看容器内部细节

docker inspect 容器ID或容器名

8. 进入正在运行的容器

进入正在运行的容器,并以命令行交互:

docker exec -it 容器ID /bin/bash

重新进入:

docker attach 容器ID

docker execdocker attach 区别:

  • attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止
  • exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止

  • PS:如果有多个终端,都对同一个容器执行了 docker attach,就会出现类似投屏显示的效果。一个终端中输入输出的内容,在其他终端上也会同步的显示,并且也会同步执行,相当于多个用户登录了同一个shell

一般用-d后台启动的程序,再用exec进入对应容器实例

  • 推荐使用 docker exec 命令,因为退出容器终端,不会导致容器的停止

9. docker cp

容器内文件拷贝到宿主机:

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

docker cp 3137ed4965c2:/1.txt .

宿主机文件拷贝到容器中:

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

docker cp todocker.txt  3137ed4965c2:/

10. 导入和导出容器

export:导出容器的内容流作为一个tar归档文件(对应import命令);

import:从tar包中的内容创建一个新的文件系统再导入为镜像(对应export命令);

示例:

# 导出
# docker export 容器ID > tar文件名
docker export abc > aaa.tar

# 导入
# cat tar文件 | docker import - 自定义镜像用户/自定义镜像名:自定义镜像版本号
cat aaa.tar | docker import - test/mytest:1.0.1

11. docker commit将容器生成新镜像

docker commit提交容器副本使之成为一个新的镜像。

docker 启动一个镜像容器后, 可以在里面执行一些命令操作,然后使用docker commit将新的这个容器快照生成一个镜像。

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[tag]

案列 ubuntu 添加 vim功能

[root@rockylinux ~]# docker run -d -it --name ubuntuv4 ubuntu /bin/bash
50f420de74b3df50ba8be77f4812867604e71eee982c412c6c16060ee70ade22
[root@rockylinux ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
50f420de74b3   ubuntu    "/bin/bash"   4 minutes ago   Up 4 minutes             ubuntuv4
--------------------------------------------------------------------------------
root@50f420de74b3:/# vim
bash: vim: command not found
root@50f420de74b3:/# apt-get update
Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
...............................................................
root@50f420de74b3:/# apt-get -y install vim
Reading package lists... Done
root@50f420de74b3:/# vim 1.txt
root@50f420de74b3:/# which vim
/usr/bin/vim
...............................................................
[root@rockylinux ~]# docker commit -m="this add vim" -a="fujiang" 50f420de74b3 new/addvimubuntu:v5

[root@rockylinux ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
new/addvimubuntu   v5        187b997db2b5   8 seconds ago    193MB
ubuntu             latest    ba6acccedd29   2 years ago      72.8MB
--------------------------------------------------------------------------------------
[root@rockylinux docker]# docker run -it --name testvim new/addvimubuntu:v5  /bin/bash
root@08975223e485:/# which vim
/usr/bin/vim
root@08975223e485:/#

@ 所有命令示意图

attach    Attach to a running container                 # 当前 shell 下 attach 连接指定运行镜像
build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像
commit    Create a new image from a container changes   # 提交当前容器为新的镜像
cp        Copy files/folders from the containers filesystem to the host path   #从容器中拷贝指定文件或者目录到宿主机中
create    Create a new container                        # 创建一个新的容器,同 run,但不启动容器
diff      Inspect changes on a container's filesystem   # 查看 docker 容器变化
events    Get real time events from the server          # 从 docker 服务获取容器实时事件
exec      Run a command in an existing container        # 在已存在的容器上运行命令
export    Stream the contents of a container as a tar archive   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history   Show the history of an image                  # 展示一个镜像形成历史
images    List images                                   # 列出系统当前镜像
import    Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]
info      Display system-wide information               # 显示系统相关信息
inspect   Return low-level information on a container   # 查看容器详细信息
kill      Kill a running container                      # kill 指定 docker 容器
load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]
login     Register or Login to the docker registry server    # 注册或者登陆一个 docker 源服务器
logout    Log out from a Docker registry server          # 从当前 Docker registry 退出
logs      Fetch the logs of a container                 # 输出当前容器日志信息
port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口对应的容器内部源端口
pause     Pause all processes within a container        # 暂停容器
ps        List containers                               # 列出容器列表
pull      Pull an image or a repository from the docker registry server   # 从docker镜像源服务器拉取指定镜像或者库镜像
push      Push an image or a repository to the docker registry server    # 推送指定镜像或者库镜像至docker源服务器
restart   Restart a running container                   # 重启运行的容器
rm        Remove one or more containers                 # 移除一个或者多个容器
rmi       Remove one or more images       # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run       Run a command in a new container              # 创建一个新的容器并运行一个命令
save      Save an image to a tar archive                # 保存一个镜像为一个 tar 包[对应 load]
search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像
start     Start a stopped containers                    # 启动容器
stop      Stop a running containers                     # 停止容器
tag       Tag an image into a repository                # 给源中镜像打标签
top       Lookup the running processes of a container   # 查看容器中运行的进程信息
unpause   Unpause a paused container                    # 取消暂停容器
version   Show the docker version information           # 查看 docker 版本号
wait      Block until a container stops, then print its exit code   # 截取容器停止时的退出状态值
以下是 Docker 容器常用命令列表,涵盖了容器的管理、查看、启动、停止、删除等操作: ### 容器管理命令 - **列出所有容器(包括已停止的)** ```bash docker ps -a ``` 可以使用 `-a` 参数查看所有容器,包括已经停止的容器[^1]。 - **启动容器** ```bash docker start [容器ID或容器名称] ``` 用于启动一个已经存在的容器[^1]。 - **停止容器** ```bash docker stop [容器ID或容器名称] ``` 停止正在运行容器,会发送 `SIGTERM` 信号并等待容器优雅退出。 - **强制停止容器** ```bash docker kill [容器ID或容器名称] ``` 强制终止容器,发送 `SIGKILL` 信号立即停止容器进程。 - **重启容器** ```bash docker restart [容器ID或容器名称] ``` 重启正在运行容器,相当于先执行 `docker stop` 再执行 `docker start`[^1]。 - **删除容器** ```bash docker rm [容器ID或容器名称] ``` 删除已经停止的容器,若容器正在运行,则需要添加 `-f` 参数强制删除。 - **运行容器** ```bash docker run [选项] [镜像名称] [命令] ``` 常用选项包括: - `-d`:后台运行容器 - `-p`:端口映射(如 `-p 8080:80`) - `-v`:挂载卷(如 `-v /host/path:/container/path`) - `--name`:为容器指定名称(如 `--name my_container`) ### 容器状态与日志查看命令 - **查看容器日志** ```bash docker logs [容器ID或容器名称] ``` 可以添加 `-f` 实时查看日志输出。 - **查看容器详情** ```bash docker inspect [容器ID或容器名称] ``` 显示容器的详细配置信息,包括网络、挂载点等。 - **进入容器执行命令** ```bash docker exec -it [容器ID或容器名称] [命令] ``` 常用于进入容器内部执行交互式命令,例如 `sh` 或 `bash`。 - **查看容器运行的进程** ```bash docker top [容器ID或容器名称] ``` - **查看容器资源使用情况** ```bash docker stats [容器ID或容器名称] ``` 实时显示 CPU、内存、网络等资源使用情况。 ### 容器镜像相关命令 - **查看本地镜像列表** ```bash docker images ``` - **删除镜像** ```bash docker rmi [镜像ID或镜像名称] ``` 若存在基于该镜像的容器,则需先删除容器,或添加 `-f` 参数强制删除。 - **批量删除所有本地镜像** ```bash docker rmi $(docker images -q) ``` 使用 `docker images -q` 获取所有镜像 ID 并传递给 `rmi` 进行删除[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值