云原生-docker-个人笔记
镜像重命名
镜像不能重命名,只能复制一份镜像重新命名。
|
|
然后删除原来的镜像
|
|
对同一个版本的镜像打不同的tag是可以的
vscode镜像管理
强烈推荐使用vscode的docker插件来管理镜像,以及使用remote插件来远程登录和修改镜像文件
container name属性
docker-compose中的container name
container name其实相当于给容器取一个别名,因为你可以使用container name对应的名称访问容器,也可以使用原名访问容器。
另外network中的alias属性也可以定义别名
Docker build上下文
|
|
xxx为dockerfile文件路径,yyy为img名称,zzz为tag名称,aaa为上下文
Portainer密码重置
|
|
找到容器id,停止portainer容器
|
|
找到Portainer容器挂载信息
|
|
找到"Mounts"下"volume"绑定的"Source"地址
执行命令重置密码
|
|
启动容器,根据提示的密码登录portainer修改密码
|
|
ADD和COPY
COPY 和 ADD 都是 Dockerfile 中的指令,有着类似的作用。主要区别是ADD有一个自动解压的功能。
alpine镜像
alpine是基于arch最小的linux镜像,3.14版本只有5Mb
|
|
它使用apk安装软件
|
|
容器间通信
外界无法与容器内主机未发布的端口进行通信,容器可以与外界进行通信。同一个网络下的容器之间的任何端口都可以直接通信
dockerfile中的 EXPOSE 指令并不发布端口,更像是制作镜像的人给创建容器的人的文档。expose可以指定端口监听TCP还是UDP(80/tcp,80/udp),不指定协议默认为TCP。
真正发布端口是在创建容器时使用-p进行的,使用-P发布docker镜像里面EXPOSE指定的端口
docker配置代理
Dockerd 代理
在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。创建配置文件。
|
|
添加内容
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
重启docker服务
|
|
查看配置是否成功
|
|
Container 代理
所有容器代理,配置~/.docker/config.json添加内容
|
|
单个容器配置代理直接使用-e注入环境变量
Docker Build 代理
虽然 docker build 的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。在构建时,需要注入 http_proxy 等参数。
|
|
资源隔离
namespace:不同容器用户进程,网络,交互,目录,用户隔离
cgroup:CPU、内存、磁盘隔离