命令: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”?