docker常用命令 及区别
image
(一)docker image build
docker image build命令创建 image 文件了。
$ docker image build -t demo-image .
# 或者
$ docker image build -t demo-image:0.0.1 .
上面代码中,-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。
(二)docker image ls
如果docker image build运行成功,就可以看到新生成的 image 文件demo-image了。
docker image ls
container容器
(一)docker container start & docker container run
docker container run命令是新建容器,每运行一次,就会新建一个容器。同样的命令运行两次,就会生成两个一模一样的容器文件。如果希望重复使用容器,就要使用docker container start命令,它用来启动已经生成、已经停止运行的容器文件。
docker container start [containerID]
docker container run -p 8000:3000 -it demo-image /bin/bash
# 或者
docker container run -p 8000:3000 -it demo-image:0.0.1 /bin/bash
container run命令的各个参数含义如下:
- -p参数:容器的 3000 端口映射到本机的 8000 端口。
- -it参数:容器的 Shell 映射到当前的 - Shell,然后你在本机窗口输入的命令,就会传入容器。
- koa-demo:0.0.1:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
- /bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用
如果一切正常,运行上面的命令以后,就会返回一个命令行提示符
root@66d80f4aaf1e:/app#
在容器的命令行,按下 Ctrl + c 停止 Node 进程,然后按下 Ctrl + d (或者输入 exit)退出容器。此外,也可以用docker container kill终止容器运行。
(二)docker container stop & docker container kill
docker container kill命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。而docker container stop命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号;
这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。
bash container stop [containerID]
(三)docker container logs
docker container logs命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出。
docker container logs [containerID]
(四)docker container exec
docker container exec命令用于进入一个正在运行的 docker 容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了。
docker container exec -it [containerID] /bin/bash
(五)docker container cp
docker container cp命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。
docker container cp [containID]:[/path/to/file] .
(六)docker container ls
查看容器
docker container ls
(七)docker container rm
容器停止运行之后,并不会消失,用下面的命令删除容器文件。
也可以使用docker container run命令的–rm参数,在容器终止运行后自动删除容器文件。
删除指定的容器文件
$ docker container rm [containerID]
$ docker container run --rm -p 8000:3000 -it demo-image /bin/bash