命令:docker exec -it redis env

5 当启动容器的时候提示:exec format error?如何解决问题?

检查启动命令是否有可执⾏权限,进⼊容器当中,使⽤脚本进⾏排查。

权限的排查,我们直接使⽤ls -l命令。

6 如何退出⼀个镜像的 bash,⽽不终⽌它?

运⾏命令,Ctrl+p,然后Ctrl+q。

7 退出容器时候⾃动删除?

使⽤--rm参数。

rm参数不能与-d参数⼀起使⽤,如果⼀起使⽤,rm参数⽆效。

rm参数使⽤场景,适合临时启动的容器。

8 怎么快速查看本地的镜像和容器?

查看本地镜像:docker images

1. REPOSITORY

2. TAG

3. IMAGE ID

4. CREATED

5. SIZE

查看运⾏的容器:docker ps

1. CONTAINER ID

2. IMAGE

3. COMMAND

4. CREATED

5. STATUS

6. PORTS

7. NAMES

2:镜像相关

1 如何批量清理镜像⽂件?

删除单⼀镜像:

1. docker rmi 镜像的名字

2. docker rmi 镜像的id:注意点,当我们的镜像id关联多个镜像的时候,我们需要强制删除,添加-f参数进⾏强制删除。

批量删除镜像: docker rmi $(docker images -q)

2 本地的镜像⽂件都存放在哪⾥?

Centos系统,镜像存放在/var/lib/docker/overlay2下⾯。

具体的镜像存在哪个⽬录:可以通过命令docker inspect container_id。

镜像是分层来存放的:

LowerDir:底层只读层。

MergedDir:我们看到的最终的⽂件系统。

UpperDir:上层写过的层。

WorkDir:⼯作⽬录。

3 构建 Docker 镜像应该遵循哪些原则?

两⼤原则:

1. 安全:尽量使⽤官⽅的库、依赖以及官⽅的基础镜像。

2. ⽂件的⼤⼩:

1. 使⽤较⼩的基础镜像。

2. 清理⼀些临时⽂件、⽬录。清理⼀些不必要的依赖。

3. 制作镜像的时候,需要指定明确版本号。

3:容器相关

1 容器退出后,通过 docker ps 命令查看不到,数据会丢失么?

容器退出后,处于exited的状态,可以通过docker ps -a查到对应的容器。

其中数据是不会丢失的。

当我们删除容器的时候,才会去清除数据。

容器的状态的演变:

image --》create --》start --》stop --》rm。

2 如何直接删除所有正在运⾏的容器?

使⽤的命令:docker kill $(docker ps -q)

注意点:stop 和 kill 的区别:

stop:停⽌容器,停⽌的容器可以继续运⾏。

kill:删除容器,测试删除容器以及对应的数据。

3 如何清理批量后台停⽌的容器?

docker rm $(docker ps -a -q)

这⾥注意只会删除掉容器的状态是exited的容器。

4 很多应⽤容器都是默认后台运⾏的,怎么查看它们的输出和⽇志信息?

使⽤docker logs container_id命令。

5 使⽤ docker port 命令查看映射容器的端⼝时,系统报错 Error: No public port ‘80’ published是什么意思?

创建镜像的时候,在使⽤EXPOSE暴露端⼝的时候,⼀定要暴露正确的端⼝。

6 可以在⼀个容器中同时运⾏多个应⽤进程吗?

不建议在⼀个容器中运⾏多个进程,因为容器是单进程模型,期望功能单⼀的。

如果有需求,需要在容器⾥运⾏多个进程的话,需要创建⽗进程来管理他们。

7 如何控制容器占⽤系统资源(CPU,内存)的份额?

在我们使⽤docker create或者docker run命令的时候,可以使⽤以下的参数来限制资源:

-c:限制cpu的使⽤

-m:限制内存的使⽤

4:仓库相关

1 仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?

仓库:相关镜像的集合。

注册服务器:实际上存储镜像的地⽅。注册服务器是通过注册索引来实现的镜像相关管理。

注册索引:⽤户的账号、权限、搜索和标签等的管理。

2 从⾮官⽅仓库(如:http://aa.docker.com)下载镜像的时候,有时候会提 示“Error:Invaild registry endpoint https://aa.docker.com:500

0/v1/...”?

当我们需要从⾮官⽅仓库下载镜像的时候,我们需要将⾮官⽅仓库的地址加⼊到docker的配置⽂件中。

"insecure-registries": [

"aa.docker.com"

5:配置相关

1 Docker 的配置⽂件放在哪⾥?如何修改配置?

/etc/docker/daemon.json

修改配置的时候,注意要重启docker,配置才能⽣效。

2 如何更改 Docker 的默认存储位置?

默认的存储位置是/var/lib/docker。

当我们需要改变默认存储位置的时候,可以通过软连接来实现,将其他的⽬录软连接指向到/var/lib/docker⽬录。

6:Docker与虚拟化

1 Docker 与 LXC(Linux Container)有何不同?

LXC利⽤Linux上的相关技术实现的容器。

Docker是在基础上做了很多的优化与改进:

镜像系统 便于容器的分发

仓库系统 便于容器的分发

版本管理 类似Git的概念,进⾏镜像的创建于管理

周边⼯具 ⾮常的遍历

移植性 通过镜像不只是封装了应⽤的运⾏的包,还封装了相关的运⾏环境的配置

2 Docker 与 Vagrant 有何不同?

Vagrant ⼀个虚拟机的管理环境 借助Vagrant可以快速的部署⼀个虚拟机

Docker 只能运⾏在Linux平台上 启动和运⾏的性能⾮常快 ⽐虚拟机快的 更加适合快速开发和部署的场景。

3 开发环境中 Docker 与 Vagrant 该如何选择?

Docker 占⽤的资源⽐较少 ⽽且运⾏应⽤⽐较⽅⾯

Vagrant 本质是帮我们创建虚拟机

最终看我们运⾏的应⽤ 是想运⾏在虚拟机上 还是呢 以容器的⽅式运⾏。

1 Docker 能在⾮ Linux 平台(Windows+MacOS)上运⾏吗?

Docker可以运⾏在⾮Linux平台上的,但是在⾮Linux平台上,底层是运⾏了⼀个微型的虚拟机的,Docker运⾏在

这个微型虚拟机上的。

2 如何将⼀台宿主机的 docker 环境迁移到另外⼀台宿主机?

停⽌Docker服务,将整个Docker的⽂件(包括配置⽂件)复制到另外⼀台机器上,在其他的机器上启动Docker。

运⾏的容器可以达成镜像,通过镜像进⾏容器的迁移⼯作。

傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波 成为 云原生 应用 至少需要满足下面几个特点:● 使用微服务 架构 对业务进行拆分。单个微服务是个自治的服务领域,对这个领域内的业务实体能够进行独立的、完整的、自洽的管理。● 使用 云原生 的中间件。微服务通常会依赖常用的中间件,比如消息通信中间件、内存缓存中间件等,采用的中间件技术也是 云原生 的。● 应用 需要能够自动检查故障并从故障中恢复。微服务本身需要配置可用性检查和存活性检查,在自动化地发现故障后,能够自动通过重启、迁移等方式进行自动恢复。● 应用 能够自动地进行弹性伸缩。 Kubernetes 并不支持为 应用 固定 IP,于是我自己通过编写网络插件把 应用 IP 管理在了 etcd 里,然后上线。请问这破坏了 云原生 的理念了吗?(单选 ) 容器启动后,我会时常 SSH 进入到容器里然后写很多文件。请问这破坏了 云原生 理念了吗? (单选 ) 我编写的容器化 应用 ,会将日志文件写在某路径写死的目录里。请问这破坏了 云原生 理念了吗?(单选 )... 课时 1 自测 Kubernetes 并不支持为 应用 固定 IP,于是我自己通过编写网络插件把 应用 IP 管理在了 etcd 里,然后上线。请问这破坏了 云原生 的理念了吗?(单选 ) 容器启动后,我会时常 SSH 进入到容器里然后写很多文件。请问这破坏了 云原生 理念了吗? (单选 ) 我编写的容器化 应用 ,会将日志文件写在某路径写死的目录里。请问这破坏了 云原生 理念... 最近,各大互联网巨头在技术战略层面,都把 云原生 列为了主要发展方向。以阿里巴巴为例,他们技术老大说, 云原生 是云计算释放红利的最短路径,是企业数字化的最短路径。现在 云原生 工程师、Kuberne... 如何给容器指定一个固定 IP 地址? 如何临时退出一个正在交互的容器的终端,而不终止它? 使用 docker port 命令映射容器的端口时,系统报错“Error: No public port ‘80’ published for xxx”?