容器的使用

获取镜像

下面的例子我们打算用 ubuntu镜像来演示, 我们可以使用 docker pull 命令来拉取 ubutun镜像

docker pull ubuntu

启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

docker run -it --name mytest ubuntu /bin/bash

参数说明:

-i: 交互式操作。 -t: 终端。 --name: 容器名字 ubuntu: ubuntu 镜像。 /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。 要退出终端,直接输入 exit:

root@1c919efeb69f:/# exit

-i 如果在一些CICD里面跑是会报 the input device is not a TTY. 需要把这个参数去掉

后台运行

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

docker run -itd ubuntu /bin/bash

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec, 或者 docker attach(下面会介绍到)。

启动已停止运行的容器

查看所有的容器命令如下:

docker ps -a

会看到如下的信息

CONTAINER ID    IMAGE          COMMAND                  CREATED             STATUS                        PORTS       NAMES
1c919efeb69f    ubuntu         "/bin/bash"              25 minutes ago      Exited (0) 6 seconds ago                  dreamy_cori
2db7864bcb5a    nginx          "/docker-entrypoint.…"   27 minutes ago      Exited (0) 26 minutes ago                 sharp_engelbart

启动已停止运行的容器

docker start docker restart

docker start b750bbbcfd88  用Id
docker start dreamy_cori 用名字

停止一个容器

停止一个容器 停止容器的命令如下:

docker stop <Container ID or Name>

进入一个容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下两个指令进入: docker attach docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

docker attach

将本地标准输入,输出和错误流附加到正在运行的容器。 比如我们进入前面我们运行的 ubuntu bash

docker attach 1c919
root@1c919efeb69f:/#

可以开多个终端一起进入,然后这多个终端看到的输入和输出是一样的 输入exit的话会导致容器停止运行.

docker exec

下面演示了使用 docker exec 命令。

docker exec -it 1c919 bash

进入成功后会看到如下的 root@1c919efeb69f:/# 注意: 如果从这个容器退出,不会导致容器的停止,(这个相当于在容器内跑了两个进程) 有一些容器没有bash 可以试一下用 sh

--entrypoint

替换原来的 entrypoint 执行我们自己的脚本等

docker run -it --name mytest2 --entrypoint sh --rm malema
docker run -it --name mytest2 --entrypoint sh --rm malema -l migration.sh 

要执行的参数migration.sh放在了镜像的后面了

也可以把参数通过环境变量传进去。 migration.sh 里面可以用 $connstr

docker run -it --name mytest2 -e connstr="数据库连接字符串" --entrypoint sh --rm malema -l migration.sh 

删除容器

删除容器使用 docker rm 命令:

docker rm -f 654789798as

批量清除一些过期不在跑的容器

docker container prune

commit 把容器变成镜像

 docker commit containerName imageName  

查看日志

docker logs 1c919

docker logs --help 可以看到更详细的帮助 我们比较常用的是会加上 -f 参数

docker logs -f 1c919

这样容器有新的输出我们就可能直接看到了 或者 --tail 20 输出最后的20条

docker logs --tail 2 1c919
最近更新的
...