本文借鉴:https://itxing666.github.io/2018/07/18/docker/,且亲测案例
image(镜像)简单操作
查操作:
// 列出本机所有image 文件
docker image ls
或
docker images
删操作:
-------------------------------------------------------------
注意删除镜像操作有坑!!!请阅读完在操作
// 删除镜像操作
docker rmi [image id]
若执行操作时报错,显示镜像正在被使用,需要停止容器。
Error response from daemon: conflict: unable to delete fce289e99eb9 (must be forced) - image is being used by stopped container adde05e5da86
请先查看该镜像的容器ID
// 查看容器ID
docker ps -a
删除容器ID
// 删除容器ID
docker rm [CONTAINER ID]
然后在执行删除镜像操作
注意如果删除容器ID时出现以下错误
Error response from daemon: You cannot remove a running container 81ec6429b4153a43ed141fb923b8b5e0bc5beafad1b0dbb3c74e595f8752c9a4. Stop the container before attempting removal or force remove
出现该错误是因为该容器还在运行中,此时应先停止容器运行,然后在删除容器,如下所示
1.通过 docker ps -a 命令查询容器ID
2.停止正在运行的容器ID
docker stop [容器ID]
3. 删除容器
docker rm [容器ID]
4.通过 docker images 命令查询镜像ID,然后删除镜像ID
docker rmi [镜像ID]
-------------------------------------------------------------
创建镜像文件操作:
准备工作:
注意!!!执行什么语言的文件务必获取该语言的镜像文件[大部分在镜像仓库中都能够获取到]
从docker hub镜像库获取镜像文件等操作(母镜像)
// 拉取镜像文件
docker pull [image 文件]
// 查看镜像文件
docker images
// 运行镜像文件
docker container run [image 文件]
执行情况如下图所示(图片出自https://itxing666.github.io/2018/07/18/docker/,亲测确实有效)
开始创建:
进入到需要放到docker中的文件
// cd 文件夹名
cd GO
创建Dockerfile文件
// 创建 Dockerfile配置文件
touch Dockerfile
vim Dockerfile
文件中写入
FROM golang
FROM golang
MAINTAINER "xingdm"
WORKDIR $GOPATH/src/godocker
ADD . $GOPATH/src/godocker
RUN go build go_1.go
解释 并 拓展:
FROM -> 母镜像
MAINTAINER -> 维护者信息
WORKDIR -> 工作目录
ADD -> 将文件复制到镜像中
RUN -> 执行操作(就跟在终端执行语句一样)
EXPOSE -> 暴露端口
ENTRYPOINT -> 程序入口
创建image 文件
// 创建image文件
docker image build -t [image文件名] .
例子
docker image build -t go .
生成容器
//生成容器
docker container run -it [image文件名] /bin/bash
例子
docker container run -it go /bin/bash
解释 并且 拓展:
-it 容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器
-p 容器的3000端口映射到本机的8000端口(web项目需要考虑端口映射) -p 3000:8000
/bin/bash 容器内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell
go image文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)
如下图所示
ok 自己完成了一个简单的创建image文件过程
彩蛋~~~
由于是新手所以瞎搞踩了个坑
docker中创建了一个同image ID ,REPOSITORY不同(image 文件名相同)的文件。如何删除