pre-install

  • 默认kernel会缺省少以下模块:
 *   CONFIG_CGROUP_DEVICE:       is not set when it should be.
 *   CONFIG_MACVLAN:     is not set when it should be.
 *   CONFIG_VETH:        is not set when it should be.
 *   CONFIG_BRIDGE:      is not set when it should be.
 *   CONFIG_BRIDGE_NETFILTER:    is not set when it should be.
 *   CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers
 *   CONFIG_MEMCG_SWAP_ENABLED:  is not set when it should be.
 *   CONFIG_BLK_CGROUP:  is not set when it should be.
 *   CONFIG_CGROUP_PERF: is optional for container statistics gathering
 *   CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering
 *   CONFIG_DM_THIN_PROVISIONING:        is not set when it should be.
 * Please check to make sure these options are set correctly.
 * Failure to do so may cause unexpected problems.

在gentoo wiki中还需要添加Device mapper debugging support

CONFIG_DM_DEBUG=y

post-install

 * To use Docker, the Docker daemon must be running as root. To automatically
 * start the Docker daemon at boot, add Docker to the default runlevel:
 *   rc-update add docker default
 * Similarly for systemd:
 *   systemctl enable docker.service
 * 
 * To use Docker as a non-root user, add yourself to the 'docker' group:
 *   usermod -aG docker youruser

problems

$ sudo systemctl start docker

$ docker run hello-world 
Error response from daemon: Cannot start container 32778af422673a6f371396cef23f6f5c705caef98cea5bf35bb2a91268f430b8: [8] System error: open /sys/fs/cgroup/cpu,cpuacct/init.scope/system.slice/docker-32778af422673a6f371396cef23f6f5c705caef98cea5bf35bb2a91268f430b8.scope/cpu.shares: no such file or directory

resolve

echo "app-emulation/docker ~amd64" >> /etc/portage/package.accept_keywords

docker command

remove containner

docker ps rm -f `docker ps -a -q`

interface

  • docker的CONTAINER是通过bridge和host交换数据,需要启动 IP Forwarding
sysctl -w net.ipv4.ip_forward=1
  • 查看docker的container接口
kk@docker:~$ docker ps
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS              PORTS                                                              NAMES
d68c05903388        monitoringartist/zabbix-3.0-xxl:latest   "/config/bootstrap.sh"   28 minutes ago      Up 28 minutes       0.0.0.0:80->80/tcp, 10052/tcp, 0.0.0.0:10051->10051/tcp, 162/udp   zabbix
65a787c692d2        monitoringartist/zabbix-db-mariadb       "/run.sh"                28 minutes ago      Up 28 minutes       3306/tcp                                                           zabbix-db
kk@docker:~$ brctl show
bridge name bridge id       STP enabled interfaces
docker0     8000.0242bfc6d6ad   no      veth34bf428
                                        vethbf3fe94
  • showmacs可以获取这个bridge的所有mac地址,host和container的mac不对应。
  • 对于host而言,is local 为no的就应该是container的地址
kk@docker:~$  brctl showmacs docker0 
port no mac addr                is local?       ageing timer
  1     02:42:ac:11:00:02       no                 0.56
  2     02:42:ac:11:00:03       no                 0.52
  2     b2:e8:8d:e9:fc:33       yes                0.00
  2     b2:e8:8d:e9:fc:33       yes                0.00
  1     ca:88:62:ce:07:05       yes                0.00
  1     ca:88:62:ce:07:05       yes                0.00
  • host的地址
kk@docker:~$ ip a 
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:bf:c6:d6:ad brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:bfff:fec6:d6ad/64 scope link 
       valid_lft forever preferred_lft forever

15: vethbf3fe94: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether ca:88:62:ce:07:05 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::c888:62ff:fece:705/64 scope link 
       valid_lft forever preferred_lft forever
17: veth34bf428: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether b2:e8:8d:e9:fc:33 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::b0e8:8dff:fee9:fc33/64 scope link 
       valid_lft forever preferred_lft forever

container 1 的信息

kk@docker:~$ docker exec d68c05903388 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
16: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:3/64 scope link 
       valid_lft forever preferred_lft forever

container 1 的信息

kk@docker:~$ docker exec 65a787c692d2 ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe11:2  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 48832  bytes 9524517 (9.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 31954  bytes 11141275 (10.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 148  bytes 12504 (12.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 148  bytes 12504 (12.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

error: The name “zabbix-db-storage” is already in use by container 1497afc43f4a.

To clear containers:
docker rm -f $(docker ps -a -q)

To clear images:
docker rmi -f $(docker images -a -q)

To clear volumes:
docker volume rm $(docker volume ls -q)

config default bridge (docker0) network

add /etc/docker/daemon.json as follows:

{
      "bip": "172.26.0.1/16"
}

###backup/restore docker image for deployment

backup

docker save myusername/myproject:latest | gzip -c > myproject_img_bak20141103.tgz

restore

gunzip -c myproject_img_bak20141103.tgz | docker load

centos7 user running docker

  • dockerroot group
sudo usermod -aG dockerroot `whoami`
  • create or change /etc/docker/daemon.json
{
        "live-restore": true,
        "group": "dockerroot"
}


+ restart docker and the **/var/run/docker.sock** should belong to **root:dockerroot**

sudo systemctl restart docker ls -lh /var/run/docker.sock


+ re-login user

---

出错提示:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused “process_linux.go:275: applying cgroup configuration for process caused “open /sys/fs/cgroup/cpuset/docker/cpuset.cpus: no such file or directory””: unknown.


由于 cgroup v1版本, 所以需要systemd指定cgroup的版本

添加到 /etc/default/grub

cat » /etc/default/grub « EOF GRUB_CMDLINE_LINUX=”systemd.unified_cgroup_hierarchy=0” EOF mount -o remount,rw /boot grub-mkconfig -o /boot/grub/grub.cfg


验证 :

sudo /usr/share/docker/contrib/check-config.sh


---

### [docker pull](https://blog.csdn.net/qq_43519779/article/details/122443563)


大部分命令都可以使用 proxychains4 访问国外资源,但 docker 下载镜像的时候不行。于是就有了这篇文章。

mkdir -p /etc/systemd/system/docker.service.d cat > /etc/systemd/system/docker.service.d/https-proxy.conf « EOF [Service] Environment=”HTTPS_PROXY=socks5://127.0.0.1:1080” EOF