docker cp命令负责在运行的容器和宿主机之间复制文件:
# format: docker cp FROM TO $ docker cp test.txt my_ubuntu:/root/test.txt $ docker cp my_ubuntu:/root/test.txt test.txt docker rmdocker rm用于删除一个镜像,通过镜像ID或镜像名来指定要删除的镜像, 默认情况下只能删除已退出的镜像:
$ docker stop my_ubuntu $ docker rm my_ubuntu-f或--force选项可以强制删除运行中的镜像。
-v或--volumes选项将删除所有挂载的数据卷。
docker volumedocker volume系列指令用于独立的管理数据卷, 请先阅读
create
将宿主机上一个目录创建为数据卷:
# format: docker volume create PATH $ docker volume create myvolls
查看所有数据卷:
docker volume ls DRIVER VOLUME NAME local 0c28b79a9b3f local myvolinspect
查看某个数据卷的详细信息:
docker volume inspect myvol [ { "CreatedAt": "2018-01-16T09:04:16Z", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/myvol/_data", "Name": "myvol", "Options": {}, "Scope": "local" } ]rm
删除某个数据卷:
docker volume remove myvol myvolprune
删除所有未被使用的数据卷:
docker volume prune WARNING! This will remove all volumes not used by at least one container. Are you sure you want to continue? [y/N] y Total reclaimed space: 0B使用数据卷
docker run和docker create命令可以使用-v或--volume选项来使用数据卷:
docker run -d -it -v myvol:/app ubuntudocker会优先寻找数据卷列表中的myvol而不是当前目录下的myvol子目录。
若找不到myvol数据卷且当前目录下也不存在myvol子目录,docker会自动创建myvol数据卷不会再当前目录下创建子目录。
--mount选项虽然语法复杂,但是可以配置更多选项:
docker run -it --mount source=my_volume,target=/app ubuntu 构建镜像上文中已经介绍了如何获取和使用已有镜像,接下来介绍如何构建自己的镜像。
我们可以将自己的程序及其运行环境打包成Docker容器,部署到服务器或者共享给其它开发者免去配置环境的烦恼。
docker diff前文已经提到过Docker镜像采用分层结构,容器运行时无法修改镜像的内容,而是在镜像层上挂载了一个可读写层。
docker diff命令可以查看容器对镜像的修改:
$ docker run --name my_ubuntu -it ubuntu # if exists: docker start -ai my_ubuntu root@c10921921bfb:~# echo "Hello, from finley" > hello.txt root@c10921921bfb:~# exit ➜ ~ docker diff my_ubuntu C /root A /root/.bash_history A /root/hello.txt我们打开一个ubuntu容器在/root目录中创建了hello.txt文件, 并在其中写入"Hello, from finley"。
通过docker diff可以看出这个操作产生了三个影响:
工作目录修改为/root, C代表变更工作目录
命令历史.bash_history文件改变, A代表文件或目录内容发生改变
修改了文件hello.txt
docker commitdocker commit命令根据容器对镜像的修改创建新的镜像层
# format: docker commit CONTAINER REPOSITORY[:TAG] $docker commit my_ubuntu my_ubuntu:2018_01_14 sha256:8096f47d8d6b80e52e617030938c7a83a9d50bafd73915d6952675e7126bb38a $docker images REPOSITORYTAGIMAGE IDCREATEDSIZEmy_ubuntu 2018_01_14 8096f47d8d6b Less than a second ago 111MB
-a或--author选项可以指定容器的作者, -m或--message可以添加备注信息:
$docker commit \ -a "finley<finley@finley.pw>" \ -m "say hello" \ my_ubuntu my_ubuntu:2018_01_14-c或--change选项可以添加一系列Dockerfile指令,关于Dockerfile的内容我们将在下文介绍。
docker tagdocker tag命令用于为镜像创建一个别名。
# format: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] $ docker tag ubuntu my_ubuntuTARGET_IMAGE可以是私有仓库REPOSITORY的URI,tag命令经常被用来协助将镜像推送到私有仓库。
docker historydocker history命令用于显示镜像各层的信息,即查看commit历史:
$ docker history ubuntu Dockerfile