啟動報錯
OS:CentOS7
安裝docker
yum install docker -y
啟動
systemctl start docker 或者 service docker start
報錯
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
檢查報錯原因
journalctl -amu docker
Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux in doc
看起來是selinux的原因脂崔,關(guān)閉selinux也不能解決券犁,需要修改docker的配置
#將/etc/sysconfig/docker中的--selinux-enabled 改為 --selinux-enabled=false
echo OPTIONS=\'--selinux-enabled=false --log-driver=journald --signature-verification=false\' >> /etc/sysconfig/docker
修改完成后啟動成功
部署與刪除
部署MySQL
#下載到本地(也可以通過docker run的時候直接下載,所以下面的語句可以不用執(zhí)行)
docker pull mysql:5.7
#不寫版本號的話,會下載最新版的畜眨,現(xiàn)在會直接下載8.0
查看下載的鏡像
docker images
啟動MySQL
mkdir -p /data/mysql/data /data/mysql/logs /data/mysql/conf
cd /data/mysql
#在docker run的時候下載鏡像
docker search mysql
docker run -p 3306:3306 --name zabbix_mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密碼 -d mysql:5.7
# -d部分必須要對標紅框出的內(nèi)容澎埠,比如mysql-cluster一定要寫成mysql/mysql-cluster旬盯,否則會報錯找不到這個repository
# -v參數(shù)是作為映射使用批幌,此處并沒有使用外部數(shù)據(jù)和外部參數(shù)來啟動
-v 外部路徑:內(nèi)部路徑
#啟動之后通過docker ps -a可以查看docker啟動的所有進程
關(guān)閉進程
docker stop 容器名
從容器中刪除(通過docker ps -a查看容器ID)
docker rm 容器ID
#刪除全部容器
docker rm $(docker ps -a -q)
docker rmi 鏡像ID
#刪除所有鏡像
docker rmi $(docker images -q)
#無法在系統(tǒng)中直接進入mysql,使用客戶端連接
重命名
docker rename 原容器名 現(xiàn)容器名
docker rename zabbix_mysql mysql
查詢?nèi)罩?/p>
docker logs mysql
重啟
docker restart mysql
使用外部參數(shù)和數(shù)據(jù)啟動MySQL
docker run --name mysql-server -t \
? ? ? -p 3306:3306 \
? ? ? --privileged=true \
? ? ? -v /data/mysql/mysql3306/data:/var/lib/mysql \
? ? ? -e MYSQL_DATABASE="zabbix" \
? ? ? -e MYSQL_USER="zabbix" \
? ? ? -e MYSQL_PASSWORD="zabbix" \
? ? ? -e MYSQL_ROOT_PASSWORD="zabbix" \
? ? ? -d mysql:5.7? \
--character-set-server=utf8 --collation-server=utf8_bin
部署的時候扶叉,外部的mysql需要處于關(guān)閉狀態(tài)勿锅,否則會報錯
--privileged=true確保內(nèi)部具有root權(quán)限,否則docker內(nèi)的root對于外部的mysql來說只是一般權(quán)限
-v /data/mysql/mysql3306/:/etc/mysql/conf.d 這是2個配置文件的路徑枣氧,因為我本身的配置文件里面有相當多的特殊設(shè)置溢十,所以此處沒有掛載配置,如果需要掛載配置达吞,最好單獨寫一份能匹配的配置
搭建zabbix-server
--link用法
--link 容器名:alias
之前已經(jīng)把mysql的名字由zabbix_mysql改為了mysql张弛,因此--link寫為 mysql:mysql而不是--link zabbix_mysql:mysql
[root@zabbix ~]# cat zabbix.sh
#!/bin/bash
docker run --name mysql-server -t \
? ? ? -e MYSQL_DATABASE="zabbix" \
? ? ? -e MYSQL_USER="zabbix" \
? ? ? -e MYSQL_PASSWORD="zabbix" \
? ? ? -e MYSQL_ROOT_PASSWORD="zabbix" \
? ? ? -d mysql:5.7? \
--character-set-server=utf8 --collation-server=utf8_bin
docker run --name zabbix-server-mysql -t \
? ? ? -e DB_SERVER_HOST="mysql-server" \
? ? ? -e MYSQL_DATABASE="zabbix" \
? ? ? -e MYSQL_USER="zabbix" \
? ? ? -e MYSQL_PASSWORD="zabbix" \
? ? ? -e MYSQL_ROOT_PASSWORD="zabbix" \
? ? ? --link mysql-server:mysql \
? ? ? -p 10051:10051 \
? ? ? -d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-web-nginx-mysql -t \
? ? ? -e DB_SERVER_HOST="mysql-server" \
? ? ? -e MYSQL_DATABASE="zabbix" \
? ? ? -e MYSQL_USER="zabbix" \
? ? ? -e MYSQL_PASSWORD="zabbix" \
? ? ? -e MYSQL_ROOT_PASSWORD="zabbix" \
? ? ? --link mysql-server:mysql \
? ? ? --link zabbix-server-mysql:zabbix-server \
? ? ? -p 80:80 \
? ? ? -d zabbix/zabbix-web-nginx-mysql:latest
安裝docker-compose
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
驗證
docker-compose --version
虛擬機下的x509報錯
#這是一個證書報錯,走公司的虛擬機不會出這個報錯,走自己PC的虛擬機就會
報錯大概就是下面的樣子
docker: error response from daemon: get https://registry-1.docker.io/v2/: x509: certificate signed by unknown authority.
解決方法:
cd ~
openssl genrsa -out client.key 4096
openssl req -new -x509 -text -key client.key -out client.cert
#然后進入目錄
cd /etc/docker/certs.d
#重新回去建路徑
mkdir -p /etc/docker/certs.d/registry.docker.com
cp ~/client.* /etc/docker/certs.d/registry.docker.com/
service docker restart
247報錯
啟動報錯大致如下:
...container_linux.go:247 ...write parent: broken pipe...
使用命令journalctl -u docker.service
檢測可以發(fā)現(xiàn)kernel字樣吞鸭,推測原因為內(nèi)核過舊
#查看當前內(nèi)核版本如下
uname -r
3.10.0-327.el7.x86_64
執(zhí)行升級并重啟后內(nèi)核版本
uname -r
3.10.0-957.10.1.el7.x86_64
經(jīng)測試可以正常運行
容器內(nèi)部無法使用vim/vi
apt-get update
apt-get install -y vim
原生倉庫下載太慢的問題
#改成國內(nèi)倉庫源
vim /etc/docker/daemon.json
{"registry-mirrors": ["https://k0rfl0e1.mirror.aliyuncs.com"]}
#echo {\"registry-mirrors\": [\"https:\/\/k0rfl0e1.mirror.aliyuncs.com\"]} > /etc/docker/daemon.json
systemctl?daemon-reload
systemctl?restart?docker
Docker報錯:WARNING: IPv4 forwarding is disabled. Networking will not work.
?sysctl?net.ipv4.ip_forward
如果結(jié)果為1則正常寺董,否則
vi?/usr/lib/sysctl.d/00-system.conf
添加下面這行
net.ipv4.ip_forward=1
然后重啟network
Docker網(wǎng)絡(luò)
docker network ls
刪除不想要的橋接網(wǎng)絡(luò)
docker network rm 7d00c730a668
刪除該橋接網(wǎng)卡
ifconfig br-7d00c730a668 down
brctl delbr br-7d00c730a668
#確認該網(wǎng)卡已經(jīng)刪除
brctl show?