文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
1. image运行与删除
- 运行image
1 | # 命令形式:docker run -ti --rm image |
解析:docker run
命令,-i
是交互模式,-t
是提供一个伪终端tty,--rm
是在容器退出后自动移除容器。
- 停用全部运行中的容器:
1 | # 命令形式:docker stop $(docker ps -q) |
- 快速删除docker中的所有容器
1 | # 命令形式:docker rm $(docker ps -aq) |
- 快速停止docker容器运行并删除docker中的容器
1 | # 命令形式:docker stop $(docker ps -q) & docker rm $(docker ps -aq) |
解析:ps -a
显示所有的容器,运行的与停止的,ps -aq
显示所有容器的CONTAINER ID
,$(docker ps -aq)
是Linux的命令替换,会将docker ps -aq
的结果替换为参数,docker rm CONTAINER ID
是删除容器命令。ps -q
是显示运行中的容器的CONTAINER ID
。
2. 制作自己的image
- 通过commit制造自己的image
1 | # 命令形式:docker commit -m "comment" container_id image_name |
3. 将自己的image推送到dockerhub
1 | # 命令形式:docker push dockerhub_username/image_name |
4. 挂载本地目录到容器中
- 挂载本机目录到docker容器中
1 | # 命令形式:$ docker run -ti --rm --volume=local_dir:container_dir image_name /bin/bash |
解析:--volume=$(pwd):/workspace
是挂载本机目录到容器中,--volume or -v
是docker的挂载命令,=$(pwd):/workspace
是挂载信息,是将$(pwd)
即本机当前目录,:
是挂载到哪,/workspace
是容器中的目录,就是把容器中的workspace
目录换成本机的当前目录,这样就可以在本机与容器之间进行交互了,本机当前目录可以编辑,容器中同时能看到。容器中的workspace
目录的修改也直接反应到了本机上。$()
是Linux中的命令替换,即将$()
中的命令内容替换为参数,pwd
是Linux查看当前目录,我的本机当前目录为CaffeDocker
,--volume=$(pwd):/workspace
就等于--volume=/Users/***/CaffeDocker:/workspace
,/Users/***/CaffeDocker
为pwd
的执行结果,$()
是将pwd
的执行结果作为参数执行。
5. 启动和停止容器
- 启动容器
1 | # 命令形式:docker start |
备注:Docker镜像是由多个文件系统(只读层)叠加而成。当我们启动一个容器的时候,Docker会加载只读镜像层并在其上添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重新启动时,之前的更改将会丢失。(在Docker中,只读层及在顶部的读写层的组合被称为Union File System,联合文件系统)。