DNS不可用
如出現這樣的錯誤:
ERROR: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/88/881bd08c0b08234bd19136957f15e4301097f4646c1e700f7fea26e41fc40069/data?verify=1552449302-pJVj4p2TS9sUquWEjuDZgIA0f7E%3D: dial tcp: lookup production.cloudflare.docker.com on 10.0.2.3:53: no such host
進入 /etc/resolv.conf 添加
nameserver 8.8.8.8
vagrant 搭的虛擬環境或者docker里面遇到過,每次重啟都會失效,可以寫個shell腳本修改,每次開機啟動就好了。
docker使用還有種方案,容器內的/etc/resolv.conf掛載到宿主機下 /etc/resolv.conf。
修改docker查找源
docker search centos
Error response from daemon: Get https://index.docker.io/v1/search?q=centos: read tcp 52.200.132.201:443: i/o timeout
進入/etc/docker
查看有沒有 daemon.json。這是docker默認的配置文件。
如果沒有新建,如果有,則修改。
$ vi daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
保存退出。
重啟docker服務
service docker restart
成功!
容器保持固定ip
https://yaxin-cn.github.io/Docker/docker-container-use-static-IP.html
查看docker連接
查看容器進程號
docker inspect -f '{{.State.Pid}}'
查看連接
nsenter -t 1840 -n netstat #1840為上面操作獲取的pid
容器間通信
參考文章 https://birdben.github.io/2017/05/02/Docker/Docker實戰(二十七)Docker容器之間的通信/
新版docker,在容器B run中使用 --link 【容器A】,這樣在容器B中就能與容器A建立連接,如需要用到容器A的ip,進行連接服務:
# mysql是容器名
mysql:3306/users?user=root&password=123456
容器拷貝數據
- 從容器拷貝數據到宿主機
docker cp 容器名:要拷貝的文件在容器里面的路徑 要拷貝到宿主機的相應路徑
- 從宿主機拷貝數據到容器
docker cp 要拷貝的文件路徑 容器名:要拷貝到容器里面對應的路徑
php連接docker mysql 8.0出錯authentication method unknown
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
MySQL 8默認使用了新的密碼驗證插件:caching_sha2_password,而之前的PHP版本中所帶的mysqlnd無法支持這種驗證
解決方法兩種,一種是升級PHP支持mysql8的新驗證插件,另一種mysql驗證方式降級。
mysql配置文件 my.cnf添加配置:
default_authentication_plugin=mysql_native_password
docker php容器 fpm總是出現file not found
nginx 配置SCRIPT_FILENNAME 一定要注意 配置的是php容器中代碼所在的路徑,不是nginx的路徑,這個坑坑了我許久!!!
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
docker 安裝amqp擴展
php7.1-fpm 總提示lib錯誤
configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path
apt-get -y install librabbitmq-dev
Docker容器內連接宿主機的Mysql服務器
宿主機在與容器同一局域網的IP地址一般是docker0對應的IP地址段的首個地址(如172.0.17.1)
我們可以在容器里通過172.0.17.1:3306訪問到宿主機的mysql服務器
mysql服務器默認的設置為允許127.0.0.1段的ip地址訪問
所以此時用172.0.17.1:3306仍然無法訪問到宿主機
此時需要在設置一下mysql
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>flush privileges;
// 其中各字符的含義:
// *.* 對任意數據庫任意表有效
// "root" "123456" 是數據庫用戶名和密碼
// '%' 允許訪問數據庫的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新權限信息
我用vagrant+virtualbox,ipconfig查詢本機ip,然后去連,連上了
bash: ps: command not found
或者 bash: top: command not found
apt-get update && apt-get install procps
