文章作者: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,联合文件系统)。