dockerfile修改
编译
1 | docker build -t app . |
运行测试
1 | docker run --rm --privileged app -p 8080:8080 |
打包和导入
save 和load
1 | docker save -o app.tar app:1.0 |
export 和import 这里不能使用,因为环境变量会丢失
主要区别在于:
docker export
和docker import
只操作容器的文件系统,不处理镜像的元数据。docker save
和docker load
保存和恢复镜像的全部历史记录和元数据。
centos7 镜像
1 | FROM centos:centos7 |
基于centos7
修改 java
Dockerfile
1 | FROM centos:centos7 |
容器直接打包镜像
1 | docker commit my-container my-updated-centos7:1.0 |
Dockerfile
ubuntu
1 | docker run -it --name u2 --privileged -v /data:/data ubuntu:22.04 /bin/bash |
1 | docker run -d --name p1key --privileged --restart=always -v /tmp:/tmp p1key |
FAQ
1.-it
是什么意思? 为什么一定要加上-it
命令,不加不行吗? 其他的容器也没有加上-it命令,比如 docker run -p 80:80 nginx
就可以运行?centos
就要加上,为什么?
回答:
-it
选项是 docker run
命令中的两个参数的组合,具有以下含义:
-i
:保持容器的标准输入 (stdin
) 打开,即使没有附加到终端。这个选项允许你向容器中输入数据。-t
:分配一个伪终端 (pseudo-tty
)。这个选项会使得Docker
分配一个伪终端设备,并绑定到容器的标准输入、输出和错误 (stdin
,stdout
,stderr
) 上。
这两个选项一起被用于创建一个交互式终端,以便你可以与容器进行交互,比如在容器内执行命令、编辑文件等。如果不使用 -it
选项,docker run
命令将在后台运行容器,你将无法立即与其进行交互。
对于像 docker run -p 80:80 nginx
这样的命令,通常用于运行服务容器,例如 Web 服务器。在这种情况下,不需要交互式终端,因为这些服务通常是以守护进程的方式运行的,不需要用户输入或与之交互。因此,在这种情况下,不需要使用 -it
选项。
但是,如果你需要在容器内执行一些命令,编辑文件等,那么就需要使用 -it
选项来创建一个交互式终端。这也是为什么对于 CentOS
容器,我们通常会使用 -it
选项来进入交互式终端,而对于像 Nginx
这样的服务容器,通常不需要使用 -it
选项。
2.docker
拉取的centos
查看是 x86
还是x64
你可以通过 docker inspect
命令来查看 Docker
镜像的详细信息,包括架构信息。例如:
1 | docker inspect --format='{{.Architecture}}' centos:7 |
这将显示镜像的架构信息,通常为 amd64
或 x86_64
,表示 x86_64 架构。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 树灼的博客!