上期我们了解了Docker的一些基本信息也成功地安装了Docker这里我们可以做个小测试:

docker run hello-word

运行上面代码表示运行hello-world的镜像:

可以看到,首先提示了没有在本地找到 "hell-world:latest"这个镜像,后面又提示尝试从远程仓库拉取这个镜像,拉取成功等等

1. 帮助命令

1.1 docker version

显示docker的版本信息

1.2 docker info

显示docker的系统信息,包括容器数量镜像数量运行的数据量等信息

1.3 docker 命令 --help

显示命令的帮助信息

在我们学习过程中会经常用到这个命令,可以查看各种命令的使用方法

2. 镜像命令

2.1 docker images

查看本地主机上的镜像

可以看到这里就显示出了本地的镜像信息:

  • REPOSITORY:镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像的ID
  • CREATED:镜像的创建时间
  • SIZE:镜像的大小

我们使用 help命令查看 docker images是否还有其它功能:

可以看到images命令还有一些可选项,其中比较常用到的是 -a展示所有镜像,和-q只显示id

2.2 docker pull

下载镜像

这里执行docker pull mysql实际执行的是
docker pull docker.io/library/mysql:latest

我们也可以指定版本下载:

这里可以看到分层下载的好处,之前版本能共用的就不会下载了

2.3 docker rmi

删除镜像

通过id删除:

删除所有:

$()表示传参数,这里参数是docker images -aq返回的所有镜像的id

3. 容器命令

3.1 docker run

创建并启动一个容器

下载一个centos的镜像来进行测试

docker run -it centos bin/bash

-it:两个参数的组合,-i 保持标准输入打开,-t 分配一个伪终端(让你能与容器交互)

可以看到运行后主机名变了说明我们进入了centos容器

可以输入exit命令,停止容器并退出

也可以使用Ctrl + P + Q,不停止容器退出

3.2 docker ps

查看运行中的容器

可以看到这里没有,因为我们刚才使用的exit退出,会停止容器

我们可以使用 -a参数,可以展示运行中和运行过的容器:

还可以使用 -n指定查询的数量:

-q 只显示id:

3.3 docker rm

删除容器

删除后会返回容器的id,如果要删除正在运行的容器可以使用-f参数

3.4 启停容器

docker start 启动容器

docker restart重启容器

docker stop 停止容器

4. 其它常用命令

4.1 后台启动容器
docker run -d 镜像名

这里启动后我们使用ps发现没有在运行的容器,这是因为我们启动的容器中没有东西在运行,于是自动停止了

我们可以在启动时让centos做一些事情:

docker run -d centos /bin/sh -c "while true; do echo study docker;sleep 1;done"

这里表示让centos每间隔一秒输出study docker

4.2 查看日志

查看容器当前的所有日志

docker logs 容器id

查看最新的5条日志

docker logs -n 5 容器id

docker -f 容器id

跟踪日志输出,即后面有新日志会立刻显示出来

docker -t 容器id,会在每行日志前面显示日志生成的时间

4.3 查看容器中进程的信息
docker top 容器id

4.4 查看进程元数据
docker inspect 容器id

执行后会输出非常多信息:

4.5 进入当前正在运行的容器
docker exec -it 容器id bashShell

-it表示以交换模式运行

可以看到成功进入了centos容器并能正常执行命令

也可以使用 attach 命令

docker attach 容器id

区别是,exec是进入容器后开启一个新的终端,attach是进入容器正在执行的终端不会启动新的进程,如果我们现在使用attach进入循环输出study docker的终端。

4.6 从容器拷贝文件到主机
docker cp 容器id:文件路径 拷贝到的位置

这里我们在容器里创建了一个test.java文件

在主机中使用cp命令

可以看到成功拷贝了,注意,这里的容器可以是不在运行状态的,只要容器没有被删除,文件就会存在

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐