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 许可协议。转载请注明来自 树灼的博客!


