dockerfile 创建docker
docker build -t fengjian/php-fpm:5.4 .
容器关闭与重启
- 重启退出的容器并且进入容器内的命令终端
docker exec -it imageid /bin/bash
docker attach imageid
- 关闭容器
docker stop containerid
- 打开容器
docker start containerid
docker 传送文件
从容器里面拷文件到宿主机?
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
exam:
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
容器名为testtomcat,要从容器里面拷贝的文件路径为:/usr/local/tomcat/webapps/test/js/test.js, 现在要将test.js从容器里面拷到宿主机的/opt路径下面
从宿主机拷文件到容器里面
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
exam:
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
容器名为testtomcat,现在要将宿主机/opt/test.js文件拷贝到容器里面的/usr/local/tomcat/webapps/test/js路径下面
需要注意的是,不管容器有没有启动,拷贝命令都会生效
docker 运行
docker container run facerecog:3.0
docker container run -it --runtime=nvidia facerecog:3.0 /bin/bash
docker container run -p 43234:5000 --runtime=nvidia facerecog:4.0
nvidia-docker run -d -it --runtime=nvidia --name="sophia" -p 3040:22 -p 3041:8888 facerecog:4.0
docker 查看/删除
container
docker container ls --all
docker container rm [NAME]
docker inspect imageid #查看详细信息
image
docker images
docker image rm [NAME]
docker 保存
save
docker save [options] images [images...]
exam:
docker save -o nginx.tar nginx:latest
docker save > nginx.tar nginx:latest
docker save -o es.tar facerecog:4.0
load
docker load [options]
exam:
docker load -i nginx.tar
docker load < nginx.tar
export
docker export [options] container
exam:
docker export -o nginx-test.tar nginx-test
import
docker import [options] file|URL|- [REPOSITORY[:TAG]]
exam:
docker import nginx-test.tar nginx:imp
cat nginx-test.tar | docker import - nginx:imp
区别
- export命令导出的tar文件略小于save命令导出的
- export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
- 基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的
建议
可以依据具体使用场景来选择命令
- 若是只想备份images,使用save、load即可
- 若是在启动容器后,容器内容有变化,需要备份,则使用export、import
容器封装为镜像
docker commit imageid newimagename