docker Q&A
目录
挂载宿主机已存在目录后,在容器内对其进行操作,报“Permission denied"
可通过两种方式解决:
-
关闭 selinux
临时关闭:
setenforce 0
永久关闭:修改/etc/sysconfig/selinux文件,将SELINUX的值设置为disabled。
-
以特权方式启动容器
指定 –privileged 参数
如:
docker run -it --privileged=true -v /test:/soft centos /bin/bash
获取宿主机 IP
####### linux
在 linux 系统中,默认为 172.17.0.1
宿主机内查看 net interface docker0
|
|
####### mac
mac 内 docker 运行是基于虚拟机, 所有的网络都经过 loopbakc:lo0 网卡进行通信
容器访问宿主机需要使用 docker.for.mac.host.internal
域名
容器连接
|
|
attach 与 exec 主要区别
- attach 直接进入容器启动命令的终端,不会启动新的进程。
- exec 则是在容器中打开新的终端,并且可以启动新的进程。
- 如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。/
将容器中文件拷贝到宿主机
|
|
使用 ip route add 命令提示权限不足
原因: 默认情况下,docker的容器中的root的权限是有严格限制的,比如,网络管理(NET_ADMIN等很多权限都是没有的。
解决方案:
添加 –cap-add=NET_ADMIN
docker run --cap-add=NET_ADMIN -it --rm centos:7 /bin/bash
参考文档
http://hustcat.github.io/docker-config-capabilities/
docker 推送镜像到 harbar
|
|
docker login http://harbar.example.cn 报错: Error response from daemon: Get “https://harbar.example..cn/v2/": Service Unavailable
原因: 需要使用 https 访问
解决办法: 添加不需要 https 认证的域名
-
修改/etc/docker/daemon.json文件
1
vim /etc/docker/daemon.json
-
添加 insecure-registries
1 2 3
{ "insecure-registries":["harbar.example.cn"] }
下载国外镜像
参考文档 https://blog.csdn.net/qq_27028561/article/details/79064414
-
使用 github 保存 Dockerfile
-
创建一个新的仓库, 写入一个文件 Dockerfile
-
Dockfile 文件内容为
1 2
# 示例 k8s.gcr.io/heapster-amd64:v1.4.2 FROM k8s.gcr.io/heapster-amd64:v1.4.2
-
-
docker 新建镜像关联 git 仓库
- 登录 docker hub 账户, 与 github 账户关联 Link Account
- 创建一个 hub , 与 github 仓库关联
- 选择仓库的分支, build
-
本地下载,重新 tag
docker pull your_docker_name/res:label
docker tag local_image_name:label want_image_name:lable