【待完善】docker常用命令整理

it2023-05-19  78

1、docker命令:

Docker用户需要sudo权限,可以把用户加入docker用户组,避免每次都输入sudo:sudo usermod -aG docker $USER

显示、删除docker镜像# 列出本机的所有 image 文件。 docker image ls # 删除 image 文件 docker image rm [imageName] docker rmi [imageName] #同于上一条命令

image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。

获取镜像:将 image 文件从仓库抓取到本地:

docker image pull [imageURL] # eg: docker image pull library/hello-world

运行某一个docker镜像

docker [container] run imageName # eg:docker run hello-world

docker container run hello-world命令有自动抓取image文件的功能。如果发现本地没有指定的image文件,就会自动从仓库中抓取,所以,前面的docker image pull 命令并不是必需的步骤。

停止docker镜像 有些容器不会自动停止,必须使用docker container kill命令手动终止

docker container kill [containID]

2、生成自己的image文件

生成自己的image文件,需要用到Dockerfile 文件,它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

5、遇到的问题

5-1 不能删除image

使用docker image rm hello-world 或 docker rmi hello-world命令,删除docker镜像时提示:“Error response from daemon: conflict: unable to remove repository reference “hello-world” (must force) - container bca1bfca3cab is using its referenced image bf756fb1ae65”。

针对于没运行的程序,强力删除,加上 -f参数,即:docker image rm -f hello-world另一种方法: 删除container 名字:使用 docker ps -as 命令,查询到name(假设为backstabbing_ritchie),然后 使用docker rm backstabbing_ritchie命令移除container删除container:docker rmi imagename

参考:【stackoverflow】

5-2 docker改名

如这里自己创建的docker镜像为 tensorflow-gpu-donald,太长了,准备改名为:tf-gpu-doanld 可以的方法为:

使用 docker image tag c81410cf7565 tf-gpu-donald:latest进行修改,这里c81410cf7565是imageID。也可以使用docker image tag tensorflow-gpu-donald:latest tf-gpu-su:latest进行修改。

其实,Image ID 才是镜像全名,tag只是一个human-readable的别名。一个image id可以对应多个tag,之前的名字可以使用 docker rmi tensorflow-gpu-donald进行删除。因为c81410cf7565有其他名字,所以image不会被删除。

refer:【Docker how to change repository name or rename image?】

5-3、运行

指定端口,运行某一个镜像:docker run -dit -p 2233:22 tf-gpu-su使用docker ps找到container ID43678b43ae1c进入镜像:docker exec -it 9a37aacfd682 bash -d是后台运行 -p是端口映射,本地端口:docker镜像内端口使用passwd修改密码:12… docker exec -it 9a37aacfd682 bash
最新回复(0)