<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.yasunaga-lab.bio.kyutech.ac.jp/EosJ/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
		<id>https://www.yasunaga-lab.bio.kyutech.ac.jp/EosJ/index.php?action=history&amp;feed=atom&amp;title=%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E4%B8%AD%E3%81%AEDocker%E3%81%AB%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%8B%E3%82%89%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B</id>
		<title>リモートサーバーの中のDockerにローカルから接続する - 変更履歴</title>
		<link rel="self" type="application/atom+xml" href="https://www.yasunaga-lab.bio.kyutech.ac.jp/EosJ/index.php?action=history&amp;feed=atom&amp;title=%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E4%B8%AD%E3%81%AEDocker%E3%81%AB%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%8B%E3%82%89%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B"/>
		<link rel="alternate" type="text/html" href="https://www.yasunaga-lab.bio.kyutech.ac.jp/EosJ/index.php?title=%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E4%B8%AD%E3%81%AEDocker%E3%81%AB%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%8B%E3%82%89%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B&amp;action=history"/>
		<updated>2026-04-30T08:05:30Z</updated>
		<subtitle>このウィキのこのページに関する変更履歴</subtitle>
		<generator>MediaWiki 1.23.6</generator>

	<entry>
		<id>https://www.yasunaga-lab.bio.kyutech.ac.jp/EosJ/index.php?title=%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E4%B8%AD%E3%81%AEDocker%E3%81%AB%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%8B%E3%82%89%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B&amp;diff=16777&amp;oldid=prev</id>
		<title>Kttn: ページの作成:「クライオ電顕備忘録に属する記事です。2019年9月6日。  == この記事について == リモートサーバーの中で動いているDockerをロ...」</title>
		<link rel="alternate" type="text/html" href="https://www.yasunaga-lab.bio.kyutech.ac.jp/EosJ/index.php?title=%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E4%B8%AD%E3%81%AEDocker%E3%81%AB%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%8B%E3%82%89%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B&amp;diff=16777&amp;oldid=prev"/>
				<updated>2019-09-06T13:05:42Z</updated>
		
		<summary type="html">&lt;p&gt;ページの作成:「&lt;a href=&quot;/EosJ/index.php/%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%AA%E9%9B%BB%E9%A1%95%E5%82%99%E5%BF%98%E9%8C%B2&quot; title=&quot;クライオ電顕備忘録&quot;&gt;クライオ電顕備忘録&lt;/a&gt;に属する記事です。2019年9月6日。  == この記事について == リモートサーバーの中で動いているDockerをロ...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[クライオ電顕備忘録]]に属する記事です。2019年9月6日。&lt;br /&gt;
&lt;br /&gt;
== この記事について ==&lt;br /&gt;
リモートサーバーの中で動いているDockerをローカルから使うときの話。&lt;br /&gt;
&lt;br /&gt;
これまでは [[DockerでRELION]]の様に、リモートの中でコンテナを起動し、そのコンテナの中でsshdを立ち上げておいて、ローカルからローカルポートフォワーディングを利用してコンテナ内へsshログインしていた。&lt;br /&gt;
&lt;br /&gt;
色々調べてみると、それ以外にもリモートのDockerコンテナへアクセスする方法、というか、リモートのDockerデーモンに直接アクセスする方法があると知った。備忘録としてここに書いてく。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== リモートのDockerのソケットに対しポートフォワードで直アクセス ==&lt;br /&gt;
表現がこれであっているかわからないが...&lt;br /&gt;
&lt;br /&gt;
どうやらDockerは、まずDockerのデーモンプロセスを走らせておき、DockerのクライアントがUnixソケット(/var/run/docker.sock)を介してデーモンとやり取りする感じで動いている、らしい。&lt;br /&gt;
&lt;br /&gt;
で、普通はDockerクライアントはローカルの/var/run/docker.sockを使うのでローカルのDockerデーモンとしかやり取りできないが、ポートフォワードを使ってリモートの/var/run/docker.sockと通信するように仕向けることで、リモートのDockerデーモンに対しローカルのDockerクライアントから直でアクセスできるように成る、みたいな、そんな感じ。&lt;br /&gt;
&lt;br /&gt;
元記事　→ https://code.visualstudio.com/docs/remote/containers-advanced#_option-2-connect-using-an-ssh-tunnel&lt;br /&gt;
&lt;br /&gt;
ステップとしてはたったの2段階で良い。作業は全部ローカルで行う。&lt;br /&gt;
&lt;br /&gt;
1. ローカルマシンの23750番ポートをリモートマシンの/var/run/docker.sockにポートフォワードで転送する。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# kttnは私のユーザー名、DL-Boxはリモートサーバー名。&lt;br /&gt;
&amp;gt; ssh -fNL localhost:23750:/var/run/docker.sock kttn@DL-Box&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
これでローカルの23750番ポートがリモートマシンの/var/run/docker.sockに化ける、みたいな感じ...&lt;br /&gt;
&lt;br /&gt;
2. 環境変数DOCKER_HOSTの値をlocalhost:23750にする。&lt;br /&gt;
&lt;br /&gt;
ローカルでDockerデーモンを動かしていない場合、環境変数設定前の挙動は以下のようになる。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; docker ps&lt;br /&gt;
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
で、環境変数を設定する。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; export DOCKER_HOST=localhost:23750&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
するとローカルのDockerクライアントはローカルの/var/run/docker.sockではなく、ローカルの23750番ポートを介してリモートの/var/run/docker.sockとやり取りをするようになる。即ち、リモートのDockerデーモンと直でやり取りをしてくれる。ので、&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; docker ps&lt;br /&gt;
CONTAINER ID        IMAGE                                       COMMAND               CREATED             STATUS              PORTS                     NAMES&lt;br /&gt;
82c53187da91        kttn8769/cryoem/relion:3.0.7-cuda9.2-gctf   &amp;quot;/usr/sbin/sshd -D&amp;quot;   About an hour ago   Up About an hour    127.0.0.1:29290-&amp;gt;22/tcp   kttn-relion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
わーお。こいつはすげぇ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
この仕組を使うと、VSCodeのDocker拡張機能を使って、ローカルのVSCodeを使ってリモートのDockerコンテナ内環境で開発作業をする、みたいなことができる。Remote-SSHでコンテナに接続してもいいのだが、それよりこちらのほうがDockerちゃんと使っている感があってなんか良い。&lt;/div&gt;</summary>
		<author><name>Kttn</name></author>	</entry>

	</feed>