如你安好

时间就像海绵里的水,只要愿挤,总还是有的。 -- 鲁迅
如你安好 ,

便是晴天 。

CentOS上Docker的拉取运行进入和停止删除搜索

举例:wordpress

拉取镜像

[root@localhost ~]# docker pull wordpress

查看镜像

[root@localhost ~]# docker images

把镜像跑起来

[root@localhost ~]# docker run -d --name wc -p 8080:8080 --restart=always docker.io/wordpress:latest

查看正在运行的镜像们

[root@localhost ~]# docker ps -a

创建完成后进入容器
-i : 交互式操作
-t : 终端

[root@localhost ~]# docker exec -it <容器名称或ID> /bin/bash

退出该容器可以用exit或Ctrl+P+Q

停止一个容器

[root@localhost ~]# docker stop <容器ID>

删除这个容器

[root@localhost ~]# docker rm -f <容器名称或ID>

搜索关键字对应的容器列表

[root@localhost ~]# docker search <名称关键字>

/////////////////////////////////////////////

那么为什么有些容器在docker run的时候需要接 -it ,有些不需要?

举例:

[root@localhost ~]# docker run -d -it --name wc -it --restart=always -p 8080:8080 docker.io/centos:7 /bin/bash

原因刨析:因为像centos、ubuntu等这些系统镜像起的容器都会启动时执行bash这个命令,进入后台运行,被docker认为是不活跃的容器进程,就会关闭容器,这样我们docker ps的时候就会发现容器没有起来。
刨析:
我们以制作镜像的角度解释为什么起容器的时候会执行bash这个命令
制作镜像的时候都会需要一个Dockerfile文件
这是Dockerfile文件内容:

base镜像

FROM busybox

设置环境变量

ENV sg WANG

启动容器时执行的命令我们,首先执行/bin/sh这个解释器,再sleep 120秒

CMD ["/bin/sh", "-c", "echo wangwenlong;sleep 120;echo ok"]

生成一个基于base镜像busybox的镜像

[root@localhost busybox]# docker build -t busybox .

创建并运行一个容器

[root@localhost busybox]# docker run -d --name w-busybox busybox

查看该容器是否运行

[root@localhost busybox]# docker ps
CONTAINER ID   IMAGE          COMMAND        CREATED             STATUS         PORTS             NAMES
596f2753e6b5   busybox    "/bin/sh -c 'echo wa…" 2 seconds ago         Up 1 second                     w-busybox

查看该容器中运行的进程

[root@localhost busybox]# docker top w-busybox
UID     PID      PPID     C        STIME       TTY        TIME       CMD
root    10382    10363    1        18:09        ?       00:00:00       /bin/sh -c echo wangwenlong;sleep 120;echo ok
root    10412    10382    0        18:09         ?      00:00:00       sleep 120

120秒后
再次查看该容器会发现该容器已经停止运行

[root@localhost busybox]# docker top w-busybox
Error response from daemon: Container 596f2753e6b500ce05638995af11c8aae6151615f9a70c2fbbbc79a43c47c3f6 is not running

以上内容都说明了如果build的那个镜像的Dockerfile文件有CMD ["解释器"]
一般都是linux系统作为镜像的时候会有上面这个
此时我们就要使用以下进行创建运行容器的命令

[root@localhost busybox]# docker run -it

该容器便可以运行起来而不会被docker关闭,因为bash模式下会进入后台运行,docker认为这是个不活跃的容器进程,就会关闭该容器

愿望集合地

(仅限登陆用户评论)

这篇文章获得了个赞!