Docker快速入门指南(4)

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 rm

docker rm用于删除一个镜像,通过镜像ID或镜像名来指定要删除的镜像, 默认情况下只能删除已退出的镜像:

$ docker stop my_ubuntu $ docker rm my_ubuntu

-f或--force选项可以强制删除运行中的镜像。

-v或--volumes选项将删除所有挂载的数据卷。

docker volume

docker volume系列指令用于独立的管理数据卷, 请先阅读

create

将宿主机上一个目录创建为数据卷:

# format: docker volume create PATH $ docker volume create myvol

ls

查看所有数据卷:

docker volume ls DRIVER VOLUME NAME local 0c28b79a9b3f local myvol

inspect

查看某个数据卷的详细信息:

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 myvol

prune

删除所有未被使用的数据卷:

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 ubuntu

docker会优先寻找数据卷列表中的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 commit

docker commit命令根据容器对镜像的修改创建新的镜像层

# format: docker commit CONTAINER REPOSITORY[:TAG] $docker commit my_ubuntu my_ubuntu:2018_01_14 sha256:8096f47d8d6b80e52e617030938c7a83a9d50bafd73915d6952675e7126bb38a $docker images REPOSITORYTAGIMAGE IDCREATEDSIZE
my_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 tag

docker tag命令用于为镜像创建一个别名。

# format: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] $ docker tag ubuntu my_ubuntu

TARGET_IMAGE可以是私有仓库REPOSITORY的URI,tag命令经常被用来协助将镜像推送到私有仓库。

docker history

docker history命令用于显示镜像各层的信息,即查看commit历史:

$ docker history ubuntu Dockerfile

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3ca3f0b8ec255e6a4b4a35f1c7319039.html