Як запустити GETH з контейнера Docker

Встановлення клієнта вузла Ethereum на машині може бути нудним процесом. Це можна зробити простіше, використовуючи клієнт Docker. Це керівництво для запуску клієнта вузла GETH (Ethereum-Go) зсередини контейнера Docker. GETH - це реалізація GoLang протоколу Ethereum. Є доступне зображення, яке можна витягти зі сховища концентратора Docker, яке може запускати середовище.

GoEthereumвеб-сайтперелічує наступні доступні зображення з описами.

  • ethereum/client-go:latest - остання розроблена версія Geth
  • ethereum/client-go:stable - це остання стабільна версія Geth
  • ethereum/client-go:{version} є стабільною версією Geth з певним номером версії
  • ethereum/client-go:release-{version} є останньою стабільною версією Geth для певного сімейства версій

Наступні порти відкриваються за замовчуванням під час запуску з контейнера.

  • 8545 TCP, що використовується на основі HTTP JSON RPC API
  • 8546 TCP, використовуваний API JCON RPC на основі WebSocket
  • 30303 TCP і UDP, використовувані протоколом P2P, що працює в мережі
  • 30304 UDP, що використовується новим накладанням однорангового виявлення за протоколом P2P

Клієнтське програмне забезпечення Docker повинно бути встановлене на машині, з якої ви збираєтесь запускати контейнер. Контейнери можуть запускатися лише за умови встановлення клієнта Docker. Залежно від вашої операційної системи, потрібна буде правильна версія клієнта.

Існують окремі версії для Windows, Linux та MacOS. Контейнер можна навіть запустити на екземплярі Linux, що працює на AWS, як звичайна інсталяція Linux. Після встановлення клієнта Docker основна платформа не має значення. Команди будуть однаковими для всіх.

Отримання зображення

Відкрийте термінал на Linux або MacOS, або командний рядок PowerShell з Windows. У підказці CLI введіть таку команду:

докер тягне ethereum / client-go

Це витягує зображення Docker зі сховища концентратора, куди воно було завантажене розробниками Ethereum. Після того, як ви видали цю команду, має відобразитися такий детальний або подібний текст:

Я вже витягнув зображення, тому багатослівний вигляд може виглядати інакше. Коли ви виконуєте команду витягування, вона завжди завантажує останнє доступне зображення, що є гарною практикою.

Запуск вузла

Тепер ви можете запустити вузол, виконавши таку команду:

Ми хочемо запустити вузол із прапорцями -i та -t для відображення інформації з нашого контейнера. -P вказує на використання номера порту, в цьому випадку 30303. Аналогічно, команда може бути запущена без прапорів , і він буде просто використовувати порти і настройки за замовчуванням всередині контейнера.

Наступна інформація повинна з’являтися з терміналу.

Рядок INFO, який показує конфігурацію, показує, що встановлено програмне забезпечення клієнтського вузла. Клієнт вузла використовує останню (станом на дату публікації) версію програмного забезпечення Ethereum, що є Константинополем, тобто активованим користувачем жорстким форком на висоті блоку 7280000.

При запуску в JSON-RPC API:

Зверніть увагу, що запуск опції rpcaddr “0.0.0.0” не є безпечним, оскільки ви відкриваєте свій вузол для всього трафіку. Якщо ваш гаманець ETH був розблокований, хакер може таким чином дістатися до вашого вузла і забрати ваші монети. Я не розглядаю питання безпеки в цій статті, але ви можете прочитати більше про це тут (захист портів RPC вашого вузла GETH). Завжди дотримуйтесь безпечних та найкращих практик.

Якщо вузол відображає в рядку INFO наступне, виникає проблема:

config = ”{ChainID: 1 Садиба: 1150000 DAO: 1920000 DAOSПідтримка: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Візантія: 4370000 Константинополь: Двигун: ethash}”

Константинополь: вказує, що програмне забезпечення не оновлено. Також немає рядка для ConstantinopleFix, який відображається у правильній конфігурації.

Постійні дані

Для постійних даних блокчейну слід використовувати обсяги даних Docker з опцією -v . Їх /path/on/hostслід замінити на вказане вами місце. Для цього слід використовувати таку команду:

Перевірка стану вузла

Ви можете перевірити стан контейнера, використовуючи таку команду:

докер ps

Це відобразить ідентифікатор контейнера з назвою зображення, статусом та використовуваними портами.

 #These are the commands to run from the Docker CLI to run the Ethereum Go node client #GETTING THE IMAGE docker pull ethereum/client-go #RUNNING THE NODE docker run -it -p 30303:30303 ethereum/client-go #RUNNING NODE USING API docker run -it -p 8545:8545 -p 30303:30303 ethereum/client-go --rpc --rpcaddr "0.0.0.0" #Note, warning about using --rpcaddr "0.0.0.0" in a live environment. It is an insecure way of opening your node. #There are different ways to secure your ports, but this is one thing to take note of if you plan to use the API. #PERSISTENT DATA docker run -it -p 30303:30303 -v /path/on/host:/root/.ethereum ethereum/client-go

Зверніть увагу, що це не автоматично видобуває ETH. Це інший процес. Для швидкого доступу до блокчейну Ethereum це мета запуску GETH.

Повне джерело коду відвідайте: //github.com/Play3rZer0/GETHDocker.git