👨🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。
镜像是在docker中的,应用是在一个镜像中的,如何在容器中运行一个程序,如果直接使用docker访问是不行的,因为此时的应用只是在某个镜像下启动了,相当于在docker内部,而不是docker本身,此时就需要将镜像中的应用程序的启动端口映射给docker,在docker访问映射端口的时候跳转到容器中启动的程序。
less复制代码//TODO: 以下命令会从正在运行的容器中退出,返回到docker中,但不会结束运行的应用
ctrl + p + q
arduino复制代码//TODO:以下命令是将应用的启动接口暴露给docker,将tomcat的8080端口映射给docker的9000端口,此时访问docker:9000 就可以访问到tomcat的8080端口
//TODO: 使用 -p 手动映射端口
docker run --name myTom -it -p 9000:8080 tomcat:8.5.49
//TODO: 使用 -P 自动映射端口
docker run --name myTom -it -P tomcat:8.5.49
docker start
来手动启动该容器。css复制代码docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
其中,IMAGE 是要使用的 Docker 镜像的名称或 ID。COMMAND 和 ARG... 是可选的,可以指定容器启动时要运行的命令和参数。
css复制代码
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
例如:要启动一个名为mycontainer的容器,使用ubuntu镜像,并执行/bin/bash命令,可以执行以下命令:
arduino复制代码docker run --name myubuntu -it ubuntu /bin/bash
注意:如果容器已经存在,则可以使用docker start命令来启动它,而不是docker run命令。
注意:使用以上两个命令进入的是已经在运行的容器,如果容器未运行,首先要启动容器。
arduino复制代码
docker stop ${docker ps -q} //关闭所有正在运行的容器
例如:
从容器内部复制文件到本地 : 使用 docker cp 命令可以将容器内部的文件或目录复制到本地文件系统中。例如,要将名为 mycontainer 的容器中的 /app/logs 目录复制到本地的 /tmp 目录中,可以使用以下命令:
bash复制代码docker cp mycontainer:/app/logs /tmp
```
该命令将会将容器内部的 `/app/logs` 目录复制到本地的 `/tmp` 目录中。
从本地复制文件到容器内部 : 使用 docker cp 命令可以将本地文件或目录复制到容器内部。例如,要将本地的 /home/user/app.log 文件复制到名为 mycontainer 的容器的 /app/logs 目录中,可以使用以下命令:
bash复制代码docker cp /home/user/app.log mycontainer:/app/logs
```
该命令将会将本地的 `/home/user/app.log` 文件复制到容器内部的 `/app/logs` 目录中。
注意:
css复制代码docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
其中,CONTAINER 参数指定要基于哪个容器创建镜像,REPOSITORY 和 TAG 参数指定新镜像的名称和标签。如果不指定 REPOSITORY 和 TAG,则默认创建一个没有名称和标签的镜像。
以下是一些常用的 docker commit 命令选项:
以下是一个示例 docker commit 命令:
perl复制代码docker commit -a "John Doe" -m "Added Apache server" my-web-container my-apache:latest
在上面的命令中,我们使用 -a 参数指定作者信息为 "John Doe",使用 -m 参数指定 commit 时的说明信息为 "Added Apache server"。我们基于名为 my-web-container 的容器创建了一个新的镜像,并将其命名为 my-apache,标签为 latest。
注意:
docker commit
会保留以前镜像的元数据以及标签,也可以在commit的时候自己指定。重点:docker名字的规范
arduino复制代码
docker export mycontainer > mycontainer.tar
在这个命令中,我们将名为 "mycontainer" 的容器的文件系统导出为一个名为 "mycontainer.tar" 的 tar 文件。
arduino复制代码
docker import mycontainer.tar myimage:latest
//如果不指定<[COMMAND] [ARG...]> 将成为一个玄虚镜像
在这个命令中,我们使用 docker import 命令将名为 "mycontainer.tar" 的 tar 文件导入为一个名为 "myimage" 的新镜像,其中 "latest" 是镜像的标签。
注意:
docker save
命令可以将指定的镜像打包成一个 tar 文件,包含镜像的所有层和元数据信息。使用docker load
命令可以将打包的镜像文件导入到 Docker 中。相比之下,docker export
命令只能导出容器的文件系统,并不包含镜像的元数据信息。使用 docker import
命令可以将导出的文件系统导入为一个新的镜像。docker save
命令会将镜像的所有层打包到一个 tar 文件中,可以用于备份和迁移镜像。相比之下,docker export
命令只导出容器的文件系统,无法用于备份和迁移镜像。docker save
命令可以使用 -o 选项将导出的镜像保存到指定的文件中,而 docker export
命令则直接将导出的容器文件系统输出到标准输出。因此,如果要将导出的容器文件系统保存到文件中,需要使用 shell 重定向符号将标准输出重定向到指定的文件中。docker save
命令可以同时导出多个镜像,而 docker export
命令只能导出一个容器的文件系统。docker load
命令可以将使用 docker save
命令导出的镜像文件(tar 文件)恢复到 Docker 中。它会还原镜像的所有层和元数据信息,并将其存储在本地 Docker 镜像库中。相比之下,docker import
命令可以将导出的容器文件系统导入为一个新的镜像。它不会还原镜像的所有层和元数据信息,因此导入的镜像可能会比原始镜像更小,且缺少了历史记录信息。docker load
命令可以同时导入多个镜像,而 docker import
命令只能导入一个容器的文件系统。docker load
命令可以将镜像文件从标准输入中读取,并将其恢复到 Docker 中,而 docker import
命令只能从文件系统中读取导出的容器文件系统。docker import
可以为导入的镜像指定与,docker load
加载的镜像不能指定与,与原镜像相同。docker commit
与 docker import
都会将一个容器转换为一个新的镜像。docker commit
命令会将当前容器的文件系统和配置保存为一个新的镜像,并将其存储在本地 Docker 镜像库中。这个新的镜像包含了容器的所有文件系统和配置信息,以及容器的元数据信息(如标签和注释等)。docker export
和 docker import
命令)则是将容器的文件系统导出为一个 tar 文件,或者将导出的 tar 文件导入为一个新的镜像。导出的 tar 文件只包含容器的文件系统,不包含容器的元数据信息。使用 docker import
命令可以将导出的文件系统导入为一个新的镜像,但是新的镜像缺少了容器的元数据信息(如标签和注释等)。docker commit 命令可以将当前容器保存为一个新的镜像,并保留容器的元数据信息,而容器的导入导出则只能导出容器的文件系统,无法保留容器的元数据信息。
使用该命令之后会在控制台输出容器文件系统中的更改情况,包括增加、删除、修改的文件和目录。每个更改前面都有一个标识符来表示更改的类型:
需要注意的是,docker diff 命令只查看容器的当前文件系统和其基础镜像之间的差异。如果您想查看容器的完整文件系统内容,可以使用 docker export 命令将其导出为 tar 归档文件,并查看归档文件中的内容。
css复制代码docker pause CONTAINER [CONTAINER...]
其中,CONTAINER 参数指定要暂停的 Docker 容器名称或 ID。
例如,以下命令可以暂停名为 my-container 的 Docker 容器:
css复制代码docker pause my-container
运行 docker pause 命令后,Docker 会发送 SIGSTOP 信号给容器内的所有进程,从而停止容器的运行状态。在容器被暂停的状态下,容器内的进程不会继续执行,直到容器被恢复为止。
css复制代码docker unpause CONTAINER [CONTAINER...]
其中,CONTAINER 参数指定要恢复的 Docker 容器名称或 ID。
例如,以下命令可以恢复名为 my-container 的 Docker 容器:
perl复制代码docker unpause my-container
注意:
docker stop
命令会停止容器中的所有进程,并将容器的状态设置为“已停止”。停止容器后,容器的所有资源(如网络端口、文件系统等)会被释放。而 docker pause
命令则会暂停容器中所有进程的执行,但容器的状态仍然是“运行中”,容器的其他资源(如网络端口、文件系统等)仍然处于占用状态。docker start
命令用于启动一个被停止的容器。启动容器后,容器将恢复到停止前的状态,容器中的所有进程将继续执行。而 docker unpause
命令则用于恢复一个被暂停的容器,恢复后容器内的进程将继续执行。docker stop
和 docker start
组合起来可以彻底停止和启动一个容器,而 docker pause
和 docker unpause
则可以临时暂停和恢复一个运行中的容器。docker pause
和 docker unpause
命令只能用于支持 Linux 内核命名空间的容器。而 docker stop
和 docker start
命令可以用于所有类型的 Docker 容器。docker port
命令,可以查看容器内部端口与主机端口之间的映射关系。docker stats 命令的语法如下:
css复制代码docker stats [OPTIONS] [CONTAINER...]
其中,OPTIONS 参数可用于指定一些选项,例如 --no-stream 选项可以关闭实时流式输出,--format 选项可以指定输出格式。CONTAINER 参数指定要查看资源使用情况的 Docker 容器,可以指定一个或多个容器的名称或 ID。
例如,以下命令可以实时监控名为 my-container 的 Docker 容器的资源使用情况:
perl复制代码docker stats my-container
使用 docker stats 可以查询全部正在运行的容器的运行状态。
docker top
命令是 Docker 中的一个命令,用于查看指定容器中正在运行的进程信息。通过运行 docker top
命令,可以查看容器中的进程列表、进程 ID、进程状态、CPU 和内存使用等信息。
docker top 命令的语法如下:
css复制代码docker top CONTAINER [ps OPTIONS]
其中,CONTAINER 参数指定要查看进程信息的 Docker 容器名称或 ID。ps OPTIONS 参数用于指定 ps 命令的选项,例如 -ef 选项可以显示所有进程的详细信息。
例如,以下命令可以查看名为 my-container 的 Docker 容器中正在运行的进程信息:
css复制代码docker top my-container
以下命令可以查看名为 my-container 的 Docker 容器中所有进程的详细信息:
css复制代码
docker top my-container -ef
运行 docker top
命令后,Docker 会显示容器中正在运行的进程信息,包括进程 ID、进程名称、进程状态、CPU 和内存使用等指标。可以通过运行 ps 命令来查看详细的进程信息。
注意:
docker update
命令是 Docker 中的一个命令,用于更新容器的配置信息。通过运行 docker update
命令,可以更新容器的 CPU、内存、网络和磁盘等资源限制,以及容器的其他配置信息。docker update
可以更新正在运行容器的配置,也可以更新停止的容器配置,在重新启动的时候修改的配置信息会生效。docker update 命令的语法如下:
css复制代码docker update [OPTIONS] CONTAINER
其中,OPTIONS 参数可用于指定容器的新配置信息,例如 --cpus 选项可以指定容器的 CPU 限制,--memory 选项可以指定容器的内存限制。CONTAINER 参数指定要更新配置信息的 Docker 容器名称或 ID。
例如,以下命令可以将名为 my-container 的 Docker 容器的 CPU 限制设置为 2:
ini复制代码
docker update --cpus=2 my-container
以下命令可以将名为 my-container 的 Docker 容器的内存限制设置为 1 GB:
ini复制代码
docker update --memory=1g my-container
运行 docker update
命令后,Docker 会更新指定容器的配置信息,包括 CPU、内存、网络和磁盘等资源限制,以及其他配置信息。可以通过运行 docker inspect
命令来查看容器的新配置信息。****
注意 :
docker update
命令只能更新容器的配置信息,不能更改容器的镜像或其他元数据信息。另外,更新容器的配置信息可能会导致容器的重启或停止,因此在使用 docker update
命令时需要谨慎操作。docker wait
命令用于阻塞当前进程,直到指定的容器停止运行或发生错误。该命令的语法如下:scss复制代码docker wait CONTAINER [CONTAINER...]
其中,CONTAINER
参数指定一个或多个要等待的容器。当指定的容器停止运行或发生错误时,docker wait
命令将返回该容器的退出码,并解除进程的阻塞状态。
例如,以下命令可以创建一个名为 my-container 的容器,并在容器内部运行一个命令 sleep 60,然后使用 docker wait
命令等待该容器的退出:
perl复制代码docker run --name my-container busybox sleep 60
docker wait my-container
在以上示例中,docker run
命令创建一个名为 my-container 的容器,并在容器内部运行一个命令 sleep 60,使容器保持运行状态。然后,docker wait
命令等待 my-container 容器的退出,并阻塞当前进程。当容器执行完成并退出时,docker wait
命令返回容器的退出码,并解除进程的阻塞状态。
注意
docker wait
命令只能等待已经启动的容器,并且容器必须以前台模式运行,即不能使用 -d
参数将容器作为后台进程运行。此外,容器的退出状态码可能因容器内部执行的操作而异,因此需要根据容器的实际情况来处理容器的退出状态。以上项目的源代码,点击星球进行免费获取 星球 (Github地址)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。