Docker(二)常用命令:创建镜像image、启动容器container、删除容器、进入容器

1.创建dockerfile

这里面的东西是自己写的。

FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。
COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。
WORKDIR /app:指定接下来的工作路径为/app。
RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。

2.构建镜像image

根据Dockerfile,会在执行build命令时,自动依赖该Dockerfile来生成image,-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。此时会有一大堆东西自动安装,很快。

$ docker image build -t feed_bert:v1 .
# 在本机看到这个 image 文件
$ docker image 

3.创建容器container

运行feed_bert:v1 这个image 文件。会从 image 文件,生成一个容器实例。容器实例就是容器文件。-it参数:容器的 Shell 映射到当前的 Shell,然后在本机窗口输入的命令,就会传入容器。

$ sudo docker container run -it feed_bert_embedding:v1 /bin/bash
root@66d80f4aaf1e:/app#

feed_bert_embedding:v1:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
/bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
# 在本机的另一个终端窗口 列出本机正在运行的容器
$ docker container ls
# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all

命令手动终止容器:

$ docker container kill [containID]

删除指定的容器文件(如果容器还在运行,则删不掉容器)

$ docker container rm [containerID]

也可以使用docker container run命令的--rm参数,在容器终止运行后自动删除容器文件。

run后面的--name用来控制启动后,进程的名字,如果不传入这个参数,则会随机生成一个名字。

(bert) [op_dev@kvm embedding]$ docker run --network host --name feed_bert --restart=always -d feed_bert:v1 bash
08a4ef23a24ec3ce383da6fab330de58936258830f566c97ed81ffaf4dededdf
(bert) [op_dev@kvm embedding]$ docker ps
CONTAINER ID   IMAGE                    COMMAND         CREATED         STATUS                                  PORTS     NAMES
08a4ef23a24e   feed_bert_embedding:v1   "bash run.sh"   7 seconds ago   Restarting (1) Less than a second ago             feed_bert

4.run 进入container

(bert) [op_dev@kvm embedding]$ docker ps
CONTAINER ID   IMAGE                    COMMAND       CREATED       STATUS        PORTS     NAMES
18c480f53403   feed_bert:v1   "/bin/bash"   3 hours ago   Up 3 hours              sad_roentgen
91dc43468e90   qunlp:v1                 "/bin/bash"   3 days ago    Up 47 hours             sad_mestorf
(bert) [op_dev@kvm embedding]$ docker exec -it 18c480f53403 bash
[root@18c480f53403 app]#

5.进入容器

docker起服务后,进入bash。docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。如果从这个 stdin 中 exit,不会导致容器的停止。

(bert) [op_dev@kvm embedding]$ docker exec -it feed_bert bash
[root@kvm app]#

6.删除镜像

注意点:

1. 删除前需要保证容器是停止的  stop
2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID  ,其中 容器(rm)  和 镜像(rmi)
3. 顺序需要先删除容器,再删除镜像

一.查看镜像

(bert) [op_dev@kvm embedding]$ docker images
REPOSITORY                               TAG              IMAGE ID       CREATED         SIZE
<none>                                   <none>           37b975515171   18 hours ago    1.29GB
feed_bertg                      v1               0a4b7ab9de6c   19 hours ago    4.97GB

我们要删除feed_bert这个镜像

二. 查询容器

-a有没有运行的容器,都会展示出来

(bert) [op_dev@kvm embedding]$ docker container ls -a
CONTAINER ID   IMAGE                    COMMAND       CREATED        STATUS        PORTS     NAMES
24644498c456   feed_bert:v1   "/bin/bash"   19 hours ago   Up 19 hours             upbeat_jackson

三.看看容器是否运行,如果在运行,则杀掉进程

(bert) [op_dev@kvm embedding]$ docker ps
CONTAINER ID   IMAGE                    COMMAND       CREATED        STATUS        PORTS     NAMES
24644498c456   feed_bert:v1   "/bin/bash"   19 hours ago   Up 19 hours             upbeat_jackson

如果不停止运行容器,直接rm容器id是什么样子呢?会告诉你,删除容器前先停掉容器

(bert) [op_dev@kvm1 embedding]$ sudo docker rm 24644498c456
Error response from daemon: You cannot remove a running container 24644498c4568541f7962ff49cf44b147082334464cc08af80bd375aa52b235c. Stop the container before attempting removal or force remove

杀掉进程:

(bert) [op_dev@kvm embedding]$ sudo docker kill 24644498c456
24644498c456
(bert) [op_dev@kvm embedding]$ 

在看容器的进程,此时已经没有运行的进程了了

(bert) [op_dev@kvm embedding]$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
(bert) [op_dev@kvm embedding]$

容器的情况:从status可以看到,两分钟前已经exit了

(bert) [op_dev@kvm embedding]$ docker container ls -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED        STATUS                       PORTS     NAMES
24644498c456   feed_bert:v1   "/bin/bash"              19 hours ago   Exited (137) 2 minutes ago             upbeat_jackson

四.删除容器文件:

(bert) [op_dev@kvm embedding]$ sudo docker container rm 24644498c456
24644498c456

此时容器文件已经没有了

(bert) [op_dev@kvm embedding]$ docker container ls -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED        STATUS                      PORTS     NAMES

五.删除image文件

(bert) [op_dev@kvm embedding]$ docker images
REPOSITORY                               TAG              IMAGE ID       CREATED         SIZE
feed_bert                         v1               0a4b7ab9de6c   9 days ago      5.94GB

(bert) [op_dev@kvm embedding]$ sudo docker rm 0a4b7ab9de6c
Error: No such container: 0a4b7ab9de6c
(bert) [op_dev@kvm embedding]$ sudo docker rmi 0a4b7ab9de6c
Untagged: feed_bert:v1
Deleted: sha256:0a4b7ab9de6c55c2fffa93e71f260155e9509af7ee47a8d2fc3dd88b1d6f46d3
Deleted: sha256:dfe993dafcc4f23320ceba0fc8d538b1b1b0182b84fd78b55d620d618433bcc6
Deleted: sha256:2c1a9e48b99899ccd9c5e3718ae7848abd996e84e3f5b6ab05b9ab4b8d9723b3
Deleted: sha256:a2584f9ad1c460759423cc9c9510c9fdf36ad48d475402f57e61f21a7a1b520d
Deleted: sha256:2783b2d5dc902828a8e42ad165b5ce8de7059ff6b54923b74d0765ebcac9a2bc
(bert) [op_dev@kvm embedding]$ docker images
REPOSITORY                               TAG              IMAGE ID       CREATED         SIZE

已经删除完毕。

7.docker退出容器不关闭容器

如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器.一定要按照顺序按这三个键。

 

参考:

1.https://yeasy.gitbook.io/docker_practice/container/attach_exec


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值