最近因为一些原因,接触到了docker技术。这里把docker中常用的一些命令记录下来,以备不时查阅。
Note
- 容器的实质是进程,是运行在一个隔离的环境里的进程,仿佛是运行在另一个系统中的进程一般。
- 容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 本文针对一些常用的docker命令,进行了分类和总结
使用容器时常用的命令
- 列出当前机器已有的镜像
docker image ls
或docker images
- 从镜像中运行一个docker容器
docker run -it --rm --gpus all -v /home/data:/data {image} /bin/bash
其中{image}表明镜像的id,这里可以输入完整的id,但一般来说输入前三四个数字就可以了。-v表示把一个外部卷挂在到启动的docker系统中。容器存储层在容器删除后会被抹掉,不会保存任何信息,因此按照Docker最佳实践的要求,所有文件的写入操作,都应该使用外部挂载卷,这样性能和稳定性都更高。 - 容器和宿主机的数据传输
推荐使用外部卷的形式,如果要直接从宿主机复制文件进入容器可以通过copy指令。
docker cp /data/test.xml {container}:/data/
其中{container}表示容器的id,可以输入完整的id,但一般来说前三四个数字就足够了。 如果要从容器内部拷贝文件到主机,同样可以使用copy指令。docker cp {container}:/data/test.xml /data/
- 退出一个正在运行的容器
exit
- 查看正在运行的容器
docker container ls
或者docker ps -a
- 启动一个已经停止的容器
docker start {container}
- 停止一个容器
docker stop {container}
- 重启一个停止的容器
docker stop {container}
- 在后台运行容器
docker run -itd --rm --gpus all -v /home/data:/data {image} /bin/bash
- 删除容器
docker rm -f {container}
- 清理掉所有处于停止状态的容器
docker container prune
加载和保存容器所用的命令
- 查看容器id
docker container ls
- 从容器创建一个新的镜像
docker commit -a {author} -m {message} {container} {REPOSITORY:TAG}
这里的author是提交的镜像作者,{message}表示修改的说明,例如:docker commit -a minghuiw -m "add support to .png" 37af1 label:v2
- 查看镜像信息
docker image ls
此处应该出现了最新提交的新镜像。 - 将新镜像保存成tar文件
docker save {image} -o output.tar
注意到这里的image可以是镜像的id,输入id的前几位即可。 - 保存为一个压缩文件
docker save {image} | gzip > output.tar.gz
如果镜像较大,可能会需要一些时间等待这个命令完成。 - 从文件中加载镜像
docker load -i output.tar.gz
或者docker load -i output.tar
注意到docker默认的大小为10G,如果容器大小已经超过了10个G,则应首先调整默认容器上限,再重新尝试加载。 - 查看是否载入成功
docker image ls
或者docker images | grep {image_name}
- 给加载的镜像打上tag
docker tag {image_id} {image_name}:{image_tag}
宿主机管理docker服务命令
- 查看docker客户端的所有命令
docker
- 更加深入的了解docker命令的使用方法(此处的command应替换为具体命令 )
docker command --help
- 例如查看stats命令的用法
docker stats --help
-
启动docker服务
service docker start
或者systemctl start docker
- 查看当前运行的docker服务
docker stats
- 关闭docker服务
service docker stop
或者systemctl stop docker