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
- 删除container 名字:使用
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