切換root
sudo -i
將使用者加入 docker,並將/var/run/docker.sock權限設定為docker group
synogroup --add docker <your_username>
chown root:docker /var/run/docker.sock
切換root
sudo -i
將使用者加入 docker,並將/var/run/docker.sock權限設定為docker group
synogroup --add docker <your_username>
chown root:docker /var/run/docker.sock
最近在raspberry pi上面安裝docker 18.09後,
會發生無法啟動docker的問題.
因此需要降版至18.06,語法如下:
sudo apt-mark unhold docker-ce
sudo apt-get purge -y docker-ce
sudo apt-get autoremove -y --purge docker-ce
sudo apt-get autoclean
sudo rm -rf /var/lib/docker
export VERSION=18.06 && curl -sSL get.docker.com | sh
sudo apt-mark hold docker-ce
在*.vmx中加入下列參數.
vhv.enable = "TRUE"
請注意不要加入下列參數,會無法開機!
hypervisor.cpuid.v0 = "FALSE"
server: 1.2.3.4
port: 514/dup
docker rm -f logspout
docker run \
-d \
--name=logspout \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/localtime:/etc/localtime \
-p 10080:80 \
-e RAW_FORMAT="{{.Data}}" \
gliderlabs/logspout \
syslog+udp://1.2.3.4:514
docker logs -f logspout
其中10.172.254.254是Getway,不要自作主張改成 192.168.1.0/24 or 10.172.0.0之類的..
yum install bridge-utils -y
service docker stop
ip link set dev docker0 down
brctl delbr docker0
iptables -t nat -F POSTROUTING
brctl addbr docker0
ip addr add 10.172.254.254/16 dev docker0
ip link set dev docker0 up
cat << EOF > /etc/docker/daemon.json
{
"bip": "10.172.254.254/16"
}
EOF
systemctl daemon-reload
systemctl restart docker.service
reboot #如果有k8s則需要重開機
#安裝 docker-ce
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce-18.06.0.ce -y
systemctl enable docker && systemctl start docker
# 移除舊版nvidia-docker
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo yum remove nvidia-docker
# 加入repositories
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
# 安裝 nvidia-docker2
sudo yum install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
# 測試
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
在終端機下,下達下列指令. 可清除docker所有容器,影像,網路.
docker system prune -a
參考下列指令:
# 環境準備
docker rm -f mongodb_mongo_1
rm -r -f $PWD/db
mkdir -p $PWD/db
# 建立mongoDB
docker run \
-d \
--name mongodb_mongo_1 \
-p 27017:27017 \
-v $PWD/db:/data/db \
mongo
sleep 5
# 建立超級管理者
docker exec -it mongodb_mongo_1 bash
mongo admin
db.createUser({ user: "admin" , pwd: "admin1234", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})
quit()
# 重新登入
mongo admin
db.auth("admin","admin1234")
use octblog
db.createUser({
user: "gevin",
pwd: "gevin1234",
roles: [ { role: "readWrite", db: "octblog" },
{ role: "readWrite", db: "octblog-log" } ]
})
quit()
mongo octblog
db.auth("gevin","gevin1234")
use octblog
db.collection.insert({'test':1234});
quit()
exit
# 重啟mongoDB
docker rm -f mongodb_mongo_1
docker run \
-d \
--name mongodb_mongo_1 \
-p 27017:27017 \
-v $PWD/db:/data/db \
mongo mongod --auth
echo "[info] 建立測試環境";
docker network create mongo-cluster >/dev/null 2>&1
docker rm -f mongo1 mongo2 mongo3 >/dev/null 2>&1
for i in 1 2 3
do
echo " mongo${i} 建立"
docker run \
-d \
-p 3000$i:27017 \
--name mongo$i \
--net mongo-cluster \
mongo mongod --replSet my-mongo-set >/dev/null 2>&1
done
echo " 設定mongo cluster"
docker exec -it mongo3 mongo --eval "config={\"_id\":\"my-mongo-set\",\"members\":[{\"_id\":0,\"host\":\"mongo1:27017\"},{\"_id\":1,\"host\":\"mongo2:27017\"},{\"_id\":2,\"host\":\"mongo3:27017\"}],\"settings\": { \"electionTimeoutMillis\": 500 }}; rs.initiate(config)"
#https://github.com/mongodb/mongo-php-library
require_once __DIR__ . "/vendor/autoload.php";
try{
$client = new MongoDB\Client("mongodb://mongo1:27017,mongo2:27017,mongo3:27017",[],[
'typeMap' => [
'array' => 'array',
'document' => 'array',
'root' => 'array',
],
]);
$db = $client->selectDatabase('test');
$cursor = $db->command(['isMaster' => 1]);
echo "[info] 成功連線至: {$cursor->toArray()[0]['primary']}\n";
} catch(Exception $e) {
echo "[error] 無法線連\n";
exit;
}
{ //若Collection:testA不存在則建立.
if((iterator_count($db->listCollections([
'filter'=>[
'name'=>'testA'
]
])))==0) //當數量為0時,建立testA
$db->createCollection('testA');
}
//連線至Collection:testA
$collection=$db->selectCollection('testA');
//若沒有任何資料,則建立100則隨機資料
if($collection->count()==0){
for($i=0;$i<100;$i++){
$insertOneResult = $collection->insertOne([
'idx' => $i,
'value' => "{$i}, rand: ".rand(0,9999),
]);
}
}
//取得最後三筆資料
foreach($collection->find([],[
'limit' => 3,
'projection' => ['_id'=>0],
'sort' => [
'idx'=>-1
]
]) as $rs){
echo "\tidx:{$rs['idx']}\tvalue:{$rs['value']}\n";
}
剛剛因為要測試mysql跟mariaDB的語法是否有不同
因此用下列語法快速建立mysql來進行測試
#建立mysql server
docker run \
--name some-mysql \
-e MYSQL_ROOT_PASSWORD=abcdefg \
-d mysql:5.7
sleep 10
#建立mysql client
docker run \
-it \
--rm \
--link some-mysql:mysqlA \
mysql sh -c 'exec mysql -h mysqlA -uroot -pabcdefg'
SQL測試語法
create database TEST1;
use TEST1;
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`geo` point DEFAULT NULL
);
INSERT INTO `test`(`id`, `geo`) VALUES (1,ST_GEOMFROMTEXT('POINT(121 23)',4326));
select * from `test` where 1;