Tôi có đang cố gắng kết nối với trình nền hỗ trợ TLS mà không có TLS không?


221

Tôi đang cố gắng tìm hiểu về Docker , nhưng tôi liên tục nhận được thông báo lỗi khó hiểu (với tôi).

Có thể ví dụ đơn giản nhất về việc này là cố gắng in phiên bản Docker mà tôi đã cài đặt:

$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.16/version:
    dial unix /var/run/docker.sock: no such file or directory.
    Are you trying to connect to a TLS-enabled daemon without TLS?

Tôi vừa mới xem qua hướng dẫn sử dụng và theo dõi từng bước một cách chính xác, vì vậy tôi rất ngạc nhiên khi tôi nhận được thông báo này ... Tôi nên làm gì bây giờ?

Tôi chỉ nhận thấy rằng nếu tôi không sử dụng, sudotôi sẽ không gặp phải lỗi:

$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8

Tất nhiên, đây không phải là một giải pháp vì tôi có thể cần phải sử dụng sudoở đâu đó trên đường ...

Tôi vừa tìm thấy một trang khác có nội dung " Nếu bạn đang sử dụng OS X thì bạn không nên sử dụng sudo." Tôi không biết nếu chúng chỉ có nghĩa cho ví dụ đó, hay nói chung.


38
Câu hỏi ngu ngốc nhưng bạn đã bắt đầu docker daemon?
Usman Ismail

Tôi đã làm theo hướng dẫn sử dụng, vì vậy tôi tin rằng docker daemon đã bắt đầu. Làm thế nào tôi có thể kiểm tra lại?
Shawn

5
Thật ra bạn đã tìm ra giải pháp. Với boot2docker, bạn sẽ không bao giờ cần sudo với linux, bạn sẽ luôn cần sudo. Điều này là do boot2docker thực sự chạy các lệnh đó trong một hộp ảo được thiết lập để truy cập daemon một cách chính xác.
Usman Ismail

1
Tôi đã vật lộn với vấn đề này và chạy mà không có sudo làm việc cho tôi
sak

6
Hầu như tất cả các câu trả lời đều dành riêng cho OS X (họ đề cập boot2docker) mặc dù OS X không được đề cập rõ ràng trong câu hỏi hoặc thẻ. Nếu bất cứ ai quan tâm đến câu trả lời chung chung xin vui lòng xem câu trả lời của tôi.
Piotr Dobrogost

Câu trả lời:


150

Đối với tôi, chạy đã $(boot2docker shellinit 2> /dev/null)khắc phục vấn đề.

Điều này chạy đầu ra của boot2docker shellinitlệnh (ba set -x ...dòng) trong phiên cuối cùng hiện tại của bạn, cho phép dockerlệnh biết nơi tìm máy ảo boot2docker.

Thêm $(boot2docker shellinit 2> /dev/null)vào dưới cùng của ~/.bash_profiletệp của bạn sẽ đảm bảo dockerlệnh được cấu hình, mỗi khi bạn mở thiết bị đầu cuối của mình.


Đối với những người sử dụng vỏ cá : boot2docker shellinit ^ /dev/null | source.


Lưu ý rằng 2> /dev/null(và tương đương với Cá ^ /dev/null) là tùy chọn. Giống như @ pablo-fernandez đề xuất, điều này ẩn các Writing ..dòng.


Tôi đã thực hiện điều này, nhưng tôi sẽ thêm nó vào .bash_profile, ý kiến ​​hay
Shawn

chắc chắn sẽ giúp với boot2docker 1.5, nhưng một boot2docker 1.2 cũ hơn đã không làm điều đó một cách chính xác
Max Markov

1
Tôi đã thêm một chuyển hướng stderr để các câu lệnh "Viết ..." không xuất hiện: $ (boot2docker shellinit 2> / dev / null)
Pablo Fernandez

3
Cảm ơn bạn đã đề cập đến vỏ cá! Giải quyết vấn đề cho tôi.
cyrillk

1
Như đã đề cập trong câu trả lời của Salvador Dali dưới đây, hãy đảm bảo bạn cũng chạy boot2docker starttrước khi chạy init init.
Kevin

78

Tôi đã nhận được cùng một lỗi trên MacOS với sudo và không có nó.

Tôi đã giải quyết nó bằng:

boot2docker start
$(boot2docker shellinit)

Tái bút: Cảm ơn Alan. Tôi phát hiện ra rằng phương pháp này được khuyến nghị trong tài liệu chính thức của họ .

PS2: Đôi khi boot2docker initcó thể được yêu cầu trước khi chạy hai lệnh (cảm ơn Aaron).


Điều này đã làm việc, nhưng tôi không hiểu tại sao? $ (Boot2docker shellinit) đang làm gì?
Emile

Điều này hoạt động trong Mac OS X nhưng tôi có cùng câu hỏi với Emile, tức là tại sao nó lại hoạt động?
Nissan

Điều này không hoạt động với tôi trên Mac OSX 10.10.4 với Docker Tools.
b01

Tôi không chỉ chạy boot2docker shellinit mà còn sao chép và chạy từng lệnh mà nó hiển thị. Tài liệu chính thức của liên kết nói rằng lệnh này chỉ hiển thị bộ lệnh được yêu cầu
Vitaliy Lebedev

Làm việc cho tôi cũng như trên một máy tính windows.
Noushad

55

Trong trường hợp của tôi (Linux Mint 17) tôi đã làm nhiều việc khác nhau và tôi không chắc chắn về những điều đó là hoàn toàn cần thiết.

Tôi đã bao gồm các gói Ubuntu bị thiếu:

$ sudo apt-get install apparmor lxc cgroup-lite

Một người dùng đã được thêm vào nhóm docker:

$ sudo usermod -aG docker ${USER}

Đã bắt đầu trình nền (openSUSE chỉ cần điều này)

$ sudo docker -d

Cảm ơn \ Ghi công


Cảm ơn Usman Ismail , vì có lẽ đó chỉ là điều cuối cùng ...

Câu hỏi ngu ngốc nhưng bạn đã bắt đầu docker daemon? - Usman Ismail ngày 17 tháng 12 năm 14 lúc 15:04


Cũng xin cảm ơn github @ MichaelJCole về giải pháp hiệu quả với tôi, vì tôi đã không kiểm tra daemon khi đọc bình luận của Usman.

Nhận xét của GitHub :

sudo apt-get install apparmor lxc cgroup-lite
sudo apt-get  install docker.io
# If you installed docker.io first, you'll have to start it manually
sudo docker -d
sudo docker run -i -t ubuntu /bin/bash

Cảm ơn bài đăng của fredjean.net đã nhận thấy các gói bị thiếu và quên các hướng dẫn cài đặt Ubuntu mặc định và google về các cách khác

Nó chỉ ra rằng các gói cgroup-lite và lxc không được cài đặt theo mặc định trên Linux Mint. Cài đặt cả hai sau đó cho phép tôi chạy bash trong hình ảnh cơ bản và sau đó xây dựng và chạy hình ảnh của tôi.


Cảm ơn bình luận của brettof86 về openSUSE


2
Cảm ơn! Trong trường hợp của tôi (Mint 17.1), đó là apparmor bị thiếu.
Alexandre L kể

2
Thêm bản thân vào nhóm docker đã làm điều đó cho tôi , sudo adduser $USER docker. Thủ thuật để làm cho nó có hiệu lực trên lớp vỏ hiện tại curgroup=$(id -gn) && newgrp docker && newgrp $curgroup, được điều chỉnh từ superuser.com/questions/272061/iêu
Tero Tilus

1
Tôi đoán thực tế rằng điều này có điểm thấp hơn nhiều là do nhiều người đang sử dụng OS X hơn Linux? Tôi đang sử dụng Ubuntu 14.04 và nó hoạt động với tôi.
đá

1
openSUSE và tôi chỉ cần khởi động trình nền
blockloop

Xin lỗi vì sự thiếu hiểu biết của tôi về docker-machine, nhưng tôi không biết. Nhưng nếu bạn tìm ra xin vui lòng chỉ ra ở đây trong các ý kiến ​​hoặc chỉnh sửa câu trả lời. : D
ElMesa

49

Vấn đề gạch chân rất đơn giản - thiếu sự cho phép đối với /var/run/docker.sockổ cắm miền.

Từ chương tùy chọn ổ cắm Daemon của tham chiếu Dòng lệnh Docker cho Docker 1.6.0:

Theo mặc định, một ổ cắm miền unix (hoặc ổ cắm IPC) được tạo tại /var/run/docker.sock, yêu cầu quyền root hoặc thành viên nhóm docker .

Các bước cần thiết để cấp quyền cho người dùng được mô tả độc đáo trong hướng dẫn cài đặt Docker cho Fedora :

Cấp quyền cho người dùng sử dụng Docker

Công cụ dòng lệnh docker liên hệ với quá trình trình nền của docker thông qua tệp socket được /var/run/docker.socksở hữu bởi root:root. Mặc dù nên sử dụng sudo cho các lệnh docker, nhưng nếu người dùng muốn tránh nó, quản trị viên có thể tạo nhóm docker, sở hữu nó /var/run/docker.sockvà thêm người dùng vào nhóm này.

$ sudo groupadd docker
$ sudo chown root:docker /var/run/docker.sock
$ sudo usermod -a -G docker $USERNAME

Đăng xuất và đăng nhập lại để thay đổi ở trên có hiệu lực. Xin lưu ý rằng các gói Docker của một số bản phân phối Linux (Ubuntu) đã được đặt /var/run/docker.socktrong dockernhóm khiến hai bước đầu tiên ở trên không cần thiết.

Trong trường hợp của OS X và boot2dockertình hình là khác nhau; daemon Docker chạy bên trong VM để DOCKER_HOSTbiến môi trường phải được đặt thành VM này để máy khách Docker có thể tìm thấy daemon Docker. Điều này được thực hiện bằng cách chạy $(boot2docker shellinit)trong vỏ.


1
Hmm, tình hình của tôi tương tự nhưng khác biệt tinh tế. Tôi đang chạy trên Ubuntu 14.04. Docker dường như được cài đặt chính xác (chỉ nhập "docker" sẽ hiển thị danh sách các lệnh). Tôi đã tạo một nhóm docker và làm cho người dùng của tôi là thành viên của nó. Đây chỉ là một hệ thống gia đình và tôi chỉ chơi với docker. Tuy nhiên, bất cứ điều gì khác ngoài "docker" đều xuất hiện lỗi. Tôi tin điều đó bởi vì docker không thể tạo /var/run/docker.sock. Trên hệ thống của tôi / var / run là một symlink to / run là root: root và 755 perm để docker không thể ghi ở đó. Không chắc giải pháp của tôi cho việc này sẽ là gì.
Steve Cohen

Piotr, lời giải thích này rất hữu ích. Hẻm núi giải thích tại sao "$ (boot2docker shellinit)" hoạt động, nhưng "boot2docker shellinit" đơn giản thì không? Tôi hiểu rằng các dấu ngoặc đơn ngụ ý thực thi trong một mạng con, nhưng tôi không thể hiểu được tại sao cần thiết để làm cho docker hoạt động chính xác khi không có lệnh nào khác yêu cầu ....
Alex Edelstein

@AlexEdelstein Sự khác biệt giữa boot2docker shellinitvà các lệnh khác là lệnh này không tự thực hiện bất kỳ thay đổi nào mà nó chỉ tạo ra các lệnh (in) mà bạn phải tự chạy. Bạn có thể chạy boot2docker shellinittrước rồi sao chép thủ công và chạy từng lệnh từ đầu ra của nó. Việc chạy tất cả các lệnh dễ dàng hơn bằng cách chạy boot2docker shellinittrong một quy trình con (có $()cú pháp) bởi vì cách này mỗi dòng đầu ra đang được tự động chạy như một lệnh shell. Xem docs.docker.com/installation/mac/#from-your-command-line nơi điều này được hiển thị chi tiết.
Piotr Dobrogost

@SteveCohen Bạn có thể muốn kiểm tra xem dịch vụ docker có chạy không sudo service docker status. Trên Ubuntu 14.04 của tôi, nó không chạy sau khi cài đặt, gây ra lỗi.
razz0

1
Cảm ơn vì đã liên kết tài liệu thực tế cho nguyên nhân gốc rễ, đã giải quyết vấn đề của tôi
RonaldFindling

23

Đảm bảo daemon Docker đang chạy:

service docker start

Điều đó đã sửa nó cho tôi!


sudo service docker startđối với tôi
Milimetric 11/07/2015

systemctl enable docker.servicesystemctl start docker.service Đối với người dùng linux system.d (Arch trong trường hợp của tôi)
PRDeving

sudo service docker restartđối với tôi
Frozen Flame

15
  1. Docker tự gọi mình là thời gian chạy tự cung cấp cho các thùng chứa Linux. Nói một cách đơn giản, nó hoạt động như cả máy chủ và máy khách.
  2. Các $ docker versiontruy vấn lệnh là nội bộ để thực thi Docker và không để daemon / dịch vụ đang chạy.
  3. $ docker images or $ docker ps or $ docker pull centos là các lệnh gửi truy vấn đến trình nền / dịch vụ docker đang chạy.
  4. Docker theo mặc định hỗ trợ các kết nối TLS đến daemon / dịch vụ của nó.
  5. Chỉ khi người dùng mà bạn đăng nhập là một phần của nhóm người dùng dockerhoặc bạn đã sử dụng sudotrước lệnh, ví dụ: $ sudo docker imagesnó không yêu cầu kết nối TLS.

Truy cập trang tài liệu Docker Bảo vệ ổ cắm Docker daemon .

Di chuyển một chút lên trên cùng và tìm warning sectioncho rõ ràng.


1
Các câu trả lời phổ biến cho đến nay chỉ áp dụng cho OS X trong khi câu trả lời này chung chung hơn nhiều, giải thích nguyên nhân và cho phép tôi giải quyết nó trên GNU / Linux.
sinisterstuf

1
@laffuste lệnh của bạn sẽ WIPE NHÓM BỔ SUNG CỦA NGƯỜI DÙNG. bởi vì "-a" bị mất tích
Pawel Barcik 20/03/2015

3
@PawelBarcik sai lầm khủng khiếp, cảm ơn:sudo usermod -a -G docker {username}
laffuste 20/03/2015

1
Làm thế nào để trả lời này trả lời câu hỏi? Lý do của lỗi là gì? Làm thế nào để khắc phục nó? (Tôi không dùng OS X nên các câu trả lời hiện tại không áp dụng).
Piotr Dobrogost

13

Bạn sẽ cần phải làm:

$boot2docker init
$boot2docker start

Các cài đặt sau đã khắc phục sự cố:

$export DOCKER_HOST=tcp://192.168.59.103:2376
$export DOCKER_CERT_PATH=/Users/{profileName}/.boot2docker/certs/boot2docker-vm
$export DOCKER_TLS_VERIFY=1

1
Lệnh này cũng có thể được sử dụng để đặt các biến môi trường (thay vì thực hiện thủ công):eval "$(boot2docker shellinit)"
Powers

11

Có thể bạn chưa có quyền đối với tệp này. Nó đã xảy ra với tôi sau khi tôi thêm mình vào dockernhóm bằng cách sử dụng

sudo gpasswd -a user docker

nhưng chưa đăng xuất.

Để giải quyết vấn đề này, bạn có thể đăng nhập lại hoặc sử dụng sg docker "docker <subcommand> ..."trước khi đăng xuất.

Nếu bạn đang ở trong nhóm docker trong /etc/group, bạn sẽ có thể chạy nó mà không cần mật khẩu gõ.

https://dingyichen.wordpress.com/2015/02/05/docker-dial-unix-varrundocker-sock-no-such-file-or-directory-are-you-trying-to-connect-to-a- tls-enable-daemon-without-tls /


7

Trên Ubuntu sau khi cài đặt lxc-Docker bạn cần phải thêm người dùng của bạn vào Docker nhóm người sử dụng:

sudo usermod -a -G docker myusername

Điều này là do các quyền của tệp socket:

srw-rw---- 1 root docker 0 Mar 20 07:43 /var/run/docker.sock

KHÔNG CHẠY usermod MÀ KHÔNG "-a" như được đề xuất trong một trong những bình luận khác hoặc nó sẽ xóa sạch cài đặt nhóm bổ sung của bạn và sẽ chỉ rời khỏi nhóm "docker"

Đây là những gì sẽ xảy ra:

➜  ~  id pawel
uid=1000(pawel) gid=1000(pawel) groups=1000(pawel),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare),998(docker)
➜  ~  usermod -G docker pawel
➜  ~  id pawel               
uid=1000(pawel) gid=1000(pawel) groups=1000(pawel),998(docker)

6

TLDR : Điều này khiến nhóm gặp gỡ Python của tôi vượt qua vấn đề này khi tôi đang điều hành một phòng khám cài đặt docker và hầu hết người dùng đều sử dụng OS X:

boot2docker init
boot2docker up

chạy các exportlệnh đầu ra cung cấp cho bạn, sau đó

docker info

sẽ cho bạn biết nó hoạt động.


Bối cảnh (điều gì đã đưa chúng ta đến vấn đề)

Tôi đã lãnh đạo một phòng khám cài đặt docker và hầu hết những người tham dự đều có OS X, và chúng tôi gặp phải vấn đề này và tôi đã khắc phục nó trên một số máy. Đây là các bước chúng tôi đã làm theo:

Đầu tiên, chúng tôi đã cài đặt homebrew (vâng, một số người tham dự không có nó):

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Sau đó, chúng tôi đã nhận được thùng, mà chúng tôi đã sử dụng để cài đặt hộp ảo và sau đó sử dụng brew để cài đặt docker và boot2docker (tất cả đều cần cho OS X) Đừng sử dụng sudo cho brew. :

brew install caskroom/cask/brew-cask
brew cask install virtualbox
brew install docker
brew install boot2docker

Giải pháp

Đó là khi chúng tôi gặp vấn đề mà người hỏi ở đây gặp phải. Sau đây đã sửa nó. Tôi hiểu initlà giao dịch một lần, nhưng có lẽ bạn sẽ phải chạy upmỗi khi bạn khởi động docker:

boot2docker init
boot2docker up

Sau đó, khi upđã được chạy, nó đưa ra một số exportlệnh. Sao chép-dán và chạy chúng.

Cuối cùng docker infosẽ cho bạn biết nó được cài đặt đúng cách.

Để giới thiệu

Phần còn lại của các lệnh nên demo nó. (trên Ubuntu linux tôi yêu cầu sudo.)

docker run hello-world
docker run -it ubuntu bash

Sau đó, bạn nên ở trên một vỏ gốc trong container:

apt-get install nano
exit

Quay lại bash người dùng bản địa của bạn:

docker ps -l

Tìm số nhận dạng thập lục phân (0-9 hoặc af) khoảng 12 chữ số trong "ID Container", vd 456789abcdef. Sau đó, bạn có thể cam kết thay đổi của mình và đặt tên cho một số tên mô tả, như descriptivename:

docker commit 456789abcdef descriptivename`

5

Mọi thứ bạn cần để chạy Docker trên Linux Ubuntu / Mint:

sudo apt-get -y install lxc
sudo gpasswd -a ${USER} docker
newgrp docker
sudo service docker restart

Tùy chọn, bạn có thể cần cài đặt hai phụ thuộc bổ sung nếu cách trên không hoạt động:

sudo apt-get -y install apparmor cgroup-lite
sudo service docker restart

1
Tôi sẽ tự cho mình +1 nếu có thể - Tôi đang tìm giải pháp và tìm ra giải pháp của riêng mình mà tôi đã quên :)
tomrozb

Điều này đã giúp tôi. Tôi nhận ra rằng dịch vụ docker không chạy sau khi cài đặt, vì vậy đã sudo service docker startgiải quyết vấn đề trên Ubuntu 14.04 của tôi.
razz0

3

Tôi đã thử các giải pháp ở đây và boot2docker không hoạt động.

Giải pháp của tôi: Gỡ cài đặt boot2docker trên máy Mac, cài đặt máy ảo Centos 7 trong VirtualBox và làm việc với Docker bên trong máy ảo đó.


3

Đối với tôi các bước sau đây đã làm việc:

  1. Tôi nhận thấy rằng việc chạy docker run hello-worldthất bại với lỗi socked này như trong câu hỏi, nhưng chạy sudo docker run hello-worldđã hoạt động.
  2. Tôi đã thêm người dùng hiện tại của mình vào dockernhóm sudo adduser user docker. Sau đó, bạn phải khởi động lại máy hoặc sử dụng su - user(kiểm tra sử dụng groupslệnh nếu có trong dockernhóm).

Sau đó, hello-worldbắt đầu làm việc.

Câu trả lời của tôi dựa trên Làm thế nào tôi có thể sử dụng docker mà không cần sudo? Điều này giải thích những gì đi sai.



Sau khi thêm bản thân vào nhóm, hãy thực hiện `newgrp docker; nhóm sơ cấp newgrp này tạo ra một lớp con, với nhóm chính của docker mới, sau đó thiết lập lại nhóm chính chính. (Một chút hack).
ctrl-alt-delor

2

Để biết giá trị của nó, tôi đã thử tất cả các giải pháp trong câu hỏi này và trong câu hỏi liên quan này và không có giải pháp nào cho đến khi tôi gỡ cài đặt và cài đặt lại VirtualBox . Quá trình này đã nâng cấp VirtualBox từ phiên bản 4.2.16 lên 4.3.22 (phiên bản trước của tôi đã không được sử dụng trên hệ thống trong một vài tháng).

Sau đó boot2dockerdockerlàm việc mà không có sự điều chỉnh nào khác.


2

Tôi đã từng gặp vấn đề tương tự. Một cách đơn giản service docker restartgiải quyết vấn đề.


2

Trình nền Docker liên kết với một ổ cắm Unix thay vì cổng TCP. Theo mặc định, ổ cắm Unix được sở hữu bởi người dùng root và những người dùng khác chỉ có thể truy cập nó bằng sudo. Trình nền Docker luôn chạy như người dùng root.

sudo groupadd docker
sudo usermod -aG docker $USER

Đăng xuất và đăng nhập lại để thành viên nhóm của bạn được đánh giá lại.

docker run hello-world

Nguồn: Quản lý Docker với tư cách là người dùng không root


1

Tôi đã có cùng một vấn đề và đã thử nhiều cách để khắc phục điều này, sửa đổi tệp .bash_profile, đăng nhập và đăng xuất, mà không gặp may mắn. Cuối cùng, khởi động lại máy của tôi đã sửa nó.


0

Hãy chắc chắn rằng có

127.0.0.1    localhost

trong bạn

`/etc/hosts `

tập tin.


0

Tôi đã đối mặt với vấn đề tương tự khi tôi đang tạo hình ảnh Docker từ Jenkins. Chỉ cần thêm người dùng vào dockernhóm và sau đó khởi động lại dịch vụ Docker và trong trường hợp của tôi, tôi phải khởi động lại dịch vụ Jenkins.

Đây là lỗi mà tôi đã nhận được:

http:///var/run/docker.sock/v1.19/build?cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&memory=0&memswap=0&rm=1&t=59aec062a8dd8b579ee1b61b299e1d9d340a1340: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
FATAL: Failed to build docker image from project Dockerfile
java.lang.RuntimeException: Failed to build docker image from project Dockerfile

Solution:

[root@Jenkins ssh]# groupadd docker
[root@Jenkins ssh]# gpasswd -a jenkins docker
Adding user jenkins to group docker
[root@Jenkins ssh]# /etc/init.d/docker restart
Stopping docker:                                           [  OK  ]
Starting docker:                                           [  OK  ]
[root@Jenkins ssh]# /etc/init.d/jenkins restart
Shutting down Jenkins                                      [  OK  ]
Starting Jenkins                                           [  OK  ]
[root@Jenkins ssh]#

-1

Một lý do khác có thể là trực quan hóa CPU BIOS của bạn không được kích hoạt. Đi và kích hoạt nó đầu tiên!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.