笔记

安装教程参考

https://yeasy.gitbook.io/docker_practice/install/ubuntu

官方文档
https://docs.docker.com/engine/install/ubuntu/

快捷命令

Docker服务重启

sudo systemctl daemon-reload
sudo systemctl restart docker

停止所有容器

sudo docker stop $(docker ps -a -q)

删除所有容器

sudo docker rm $(docker ps -a -q)

强制删除所有镜像

sudo docker rmi -f $(docker images -q)

删除所有数据卷

docker volume rm $(docker volume ls |awk '{print $2}')

Docker中安装PHP扩展

PHP Core Extensions

We provide the helper scripts docker-php-ext-configure, docker-php-ext-install, and docker-php-ext-enable to more easily install PHP extensions.

可利用 docker-php-ext-install 方式安装的扩展列表

**Possible values for ext-name: bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip

usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name …] ie: /usr/local/bin/docker-php-ext-install gd mysqli /usr/local/bin/docker-php-ext-install pdo pdo_mysql /usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop

PECL extensions

  1. RUN pecl install redis-4.0.1 \
  2. && pecl install xdebug-2.6.0 \
  3. && docker-php-ext-enable redis xdebug

Docker国内镜像

踩坑记录

停止容器报错

异常数据

Error response from daemon: cannot stop container: 252e0e3ac36a: Cannot kill container 252e0e3ac36a17d41515e272053400bc7a7052871fd302960454a04133d2e3df: unknown error after kill: docker-runc did not terminate sucessfully: container_linux.go:393: signaling init process caused “permission denied” : unknown

解决办法
1、sudo killall docker-containerd-shimsudo killall containerd-shim
2、sudo systemctl restart docker

权限不足

现状
每次都要sudo,用其他管理工具管理Docker也会提示如下

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied

解决办法
其实这是我们在安装的时候没在最开始就设置好用户组,导致后续使用麻烦
image.png
退出终端,不想重新登录用户,可以试试使用命令 newgrp 切换到其他用户组访问,如: newgrp docker
这个问题也可以参考 Docker Docs:Manage Docker as a non-root user 的官方解释。

专题

容器安全

Kata Containers

图解Docker命令

image.png

扩展