docker 使用 yum 源安装

Kubernetes 环境搭建

docker 容器无法输入中文

  1. docker exec -it 容器名 env LANG=C.UTF-8 /bin/bash

镜像加速

在下载镜像的时候,默认是 docker 官方的镜像,由于地域原因,有时候就很慢,可以使用国内的镜像源地址

登陆阿里云镜像中心地址:https://cr.console.aliyun.com/
然后选择镜像中心,找到加速器地址
image.png
下面还有对应的操作文档。笔者这里用了 Docker Desktop ,桌面版,只需要将加速器地址写在 registry-mirrors 中,然后点击右下角的 Apply & Restart ,等待重启后,就可以加速了
image.png

docker 容器如何访问宿主机

有时候在本地测试或则学习的时候,一些中间件使用 docker-compose 安装的,遇到容器中要访问宿主机的时候,就不知道如何访问了。

参考文章

docker-compose 中的 network 参数,参数常见可选值有 none、host、bridge

  • none:顾名思义,禁用容器网络,这个时候容器无法访问外部网络,外部也无法访问容器,你的-p参数也会被忽略
  • bridge:桥接,也是默认模式,容器会与宿主进行桥接,通过一个桥接的 docker0 网卡进行通信
  • host:即撤销网络隔离,这个模式下,你不需要要指定-p参数,容器内监听什么端口,就直接会绑定到宿主的同一端口上,这时容器和宿主是没有隔离的

一般安装软件的时候都没有指定网络,默认就是桥接。在 mac 上与 linux 上由于 mac 的隔离不同,docker0 网卡就没有被创建,但是可以在 docker Desktop 软件上看到使用的 IP

image.png
如上图,使用了 192.168.65.0 ,会使用 192.168.65.1 作为网关,而 192.168.65.2 则是宿主机的通信 IP,在 mac 中系统中,你随便进入一个 docker 容器,然后 ping 下面的代码就会返回宿主机的 IP 地址

  1. # docker engine 17.12 版本以前用这个
  2. sh-4.2# ping docker.for.mac.localhost
  3. PING docker.for.mac.localhost (192.168.65.2) 56(84) bytes of data.
  4. 64 bytes from 192.168.65.2 (192.168.65.2): icmp_seq=1 ttl=37 time=0.520 ms
  5. 64 bytes from 192.168.65.2 (192.168.65.2): icmp_seq=2 ttl=37 time=2.67 ms
  6. # docker engine 17.12 版本以后用这个地址
  7. sh-4.2# ping docker.for.mac.host.internal
  8. PING docker.for.mac.host.internal (192.168.65.2) 56(84) bytes of data.
  9. 64 bytes from 192.168.65.2 (192.168.65.2): icmp_seq=1 ttl=37 time=6.55 ms
  10. 64 bytes from 192.168.65.2 (192.168.65.2): icmp_seq=2 ttl=37 time=6.87 ms

docker 容器中安装软件

  1. # 进入容器
  2. docker exec -it mysql /bin/bash
  3. # 备份源,并且替换为国内源
  4. mv /etc/apt/sources.list /etc/apt/sources.list.bak
  5. # 添加网易源到 sources.list 文件
  6. echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list
  7. echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
  8. echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
  9. echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
  10. # 更新源
  11. apt update
  12. # 安装软件,比如 vim
  13. apt-get install vim

下面是阿里云的源

  1. echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main" >> /etc/apt/sources.list
  2. echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial main" >> /etc/apt/sources.list
  3. echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main" >> /etc/apt/sources.list
  4. echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main" >> /etc/apt/sources.list
  5. echo "deb http://mirrors.aliyun.com/ubuntu/ xenial universe" >> /etc/apt/sources.list
  6. echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe" >> /etc/apt/sources.list
  7. echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe" >> /etc/apt/sources.list
  8. echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe" >> /etc/apt/sources.list
  9. echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security main" >> /etc/apt/sources.list
  10. echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main" >> /etc/apt/sources.list
  11. echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe" >> /etc/apt/sources.list
  12. echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe" >> /etc/apt/sources.list

如果在 update 过程中出现了如下的警告或错误提示

  1. W: GPG error: http://mirrors.aliyun.com/ubuntu xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
  2. E: The repository 'http://mirrors.aliyun.com/ubuntu xenial InRelease' is not signed.

可以将公钥编码添加到服务器

  1. apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 公钥编码
  2. 比如上面的错误信息可以执行下面的两条语句来解决
  3. root@2a0d7a121d07:/etc/apt# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
  4. Executing: /tmp/apt-key-gpghome.mavQ53lyQL/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
  5. gpg: key 40976EAF437D05B5: public key "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" imported
  6. gpg: Total number processed: 1
  7. gpg: imported: 1
  8. root@2a0d7a121d07:/etc/apt# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
  9. Executing: /tmp/apt-key-gpghome.Lo2E3qSuPJ/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
  10. gpg: key 3B4FE6ACC0B21F32: public key "Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>" imported
  11. gpg: Total number processed: 1
  12. gpg: imported: 1