docker遇到的一些问题

docker个人遇到的问题一些备注

1) 如果出现 bash: vim : command not found 需要安装下vim

1
2
$ apt-get update
$ apt-get install vim

2) 如果出现 bash: apt-get : command not found 尝试使用yum安装

1
$ yum install vim -y

3) 如果容器内出现 [Errno 13] Permission denied (错误描述如下)

1
2
3
4
5
$ yum install vim -y
Loaded plugins: fastestmirror, ovl
ovl: Error while doing RPMdb copy-up:
[Errno 13] Permission denied: '/var/lib/rpm/Basenames'
You need to be root to perform this command.
  • 是因为进入用户不是root权限,进入容器时增加 –user root 参数 (docker exec -it –user root 容器 bash)

4) 查看所有容器的ip

1
$ docker inspect --format='{{.Name}} - {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

5) docker中安装php扩展

1
$ docker-php-ext-install pdo

6) 提示文件挂载目录不可使用
可以查看一下doc可以挂载的授权目录的列表可以在桌面版上看一下
4hNwhh
7) 如果创建网络出现 ERROR: Pool overlaps with other one on this address space
该错误的意思是docker已有一个容器占用了目前docker-compose里的subnet。

1
docker network prune

7) 创建一个自己的网络

1
docker network create --subnet=172.25.0.0/24 --driver=bridge local_net

docker网络模式

bridge模式(默认)(–network=bridge)

  • 创建一个名为docker0的虚拟网桥,并将容器连接到一个docker0虚拟网桥,所有网桥下的容器共享Network Namespace
  • 可以关闭容器见通信,在DOCKER_OPTS变量中设置–icc=false,这样只有使用–link才能使两个容器通信。
    vWMAEu

    host模式(–network=host)

  • 容器和宿主机共享Network,使用宿主机的IP和端口,容器可以直接使用宿主机的IP地址与外界通信
  • 网络性能比较好,网络的隔离性不好,
    ESCn9R

    none模式 (–network=none)

  • 拥有自己的Network Namespace,该模式默认关闭了容器的网络功能,需要自己配置。
    7Ojq4g

    container模式 (–network=container:NAME_or_ID)

  • 容器和另外一个容器共享Network namespace,而不是和宿主机共享
    CnSpBL