Docker初心者が超絶簡単にDockerfileをまとめてみた その2
前回のブログの続き
前回使わなかった命令の中でよく使うものを紹介したいと思います。
実行環境
前回と一緒。
- ubuntu16.04.1(elementary OS 0.4.1 Loki)
- Docker version 17.12.0-ce
MAINTAINER命令
Dockerfileをチームで共有して開発する場合、誰がこのDockerfileを作ったのかを明示的にしておくようにします。
チームとしてはわかった方が嬉しいですよね。
多分Dockerfileとかコピペするだろうから意味ないと思うけど。
イメージ作成に直接関係があるかといえば、なんとも言えないです。
自分しか触らないのであれば書く必要は無いですね、きっと。
一応書き方。
MAINTAINER <名前> # 例えばこんな感じ MAINTAINER motty93 rdwbocungelt5@gmail.com
必要になったら書き方ググればいいと思います〜まあ無くても大丈夫かな。
WORKDIR命令
ディレクトリ移動の命令。
ディレクトリがなければ、自動的にディレクトリが作成されます。
FROM ubuntu WORKDIR work WORKDIR shop RUN pwd
pwd
の結果は/work/show
です。
主にRUN
・CMD
・ENTRYPOINT
・COPY
・ADD
命令実行時の作業ディレクトリを指定するときに使います。
Rails環境を作った時にも使ったので、別の記事でそれはあげたいと思います。
VOLUME命令
(※1)マウントポイントを作成して外部マウント可能な(※2)ボリュームを作成する命令。
よく、データの永続化で使われます。
てかほとんどそれ。
FROM cenos:latest RUN yum install -y httpd RUN mkdir /var/log/httpd CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] VOLUME /var/log/httpd
こんな感じにすると、apacheのログがVOLUME
で指定されたディレクトリへ溜まっていきます。
詳しくはdocker-compose
でwordpress環境を作成するときに、データの永続化でやってみたいと思います。
※1 マウント:OSに読み書きできるように認識させる
※2 ボリューム:マウントされた領域のこと
ADD命令 & COPY命令
どちらかといえばCOPY命令を使った方がいいらしい。
第一引数に、ホストOS(自分のPC)のディレクトリ/ファイルを、第二引数にコンテナ内のディレクトリを指定します。
こんな感じ。
FROM centos RUN mkdir app # index.htmlはDockerfileと同じディレクトリにあるものと仮定します ADD index.html /app COPY index.html /app
要は、自分のPCのにあるファイルやらディレクトリやらをコンテナ内に持っていくって感じです。
コンテナ起動してから作成すればいいやん!って思った方、いると思います。
前回も書いたんですが、直接コンテナに入って行ったことは、コンテナを停止するとイメージを作成した状態まで戻ってしまいます(場合によります)。
だからイメージを作成する命令(Dockerfile)を書いてあげるんですよ(これで何回かハマりました、Dockerを理解していない証拠・・・)。
ENV命令
環境変数の設定です。
WORKDIR
命令などのディレクトリを指定する命令と一緒に使われることがしばしばです。
FROM centos RUN $DIR /dir WORKDIR /usr/$DIR COPY index.html /usr/$DIR
ここで環境変数を設定しておけば、コンテナを作成しても有効なままです。
設定されている値はdocker inspect
で参照できます。
EXPOSE命令
特定のポートをコンテナが実行された時に読み取るようにdockerに教えてあげる命令です。
問題なのが、この命令があってもホストのブラウザからコンテナにアクセスできないんですよ。
なので、-p
オプションで開くポートを指定する必要はあります。
FROM centos RUN yum install -y httpd EXPOSE 3000 CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
こんな感じで
$ docker run -d -p 3000 イメージ名
で起動できます。
いじょー
とりあえず主要なものだけピックアップして簡単に説明してみました。
初心者の説明なので、全く当てにならないかもしれないですが、参考にできるところだけ見てみてください。
今度はdocker-compose
でいろんな環境を作ってみたいと思います。
お疲れ様でした!
Docker初心者が超絶簡単にDockerfileをまとめてみた その1
前回の記事で簡単なDockerfileを初めて作ってみました。
ですが、全くDockerfileの書き方について触れてなかった、というよりスルーしていたのでちょっとまとめてみたいと思います。
他にDockerfileの記事を書いている人はだいたいわかりにくい・・・
多分簡単です。慣れれば。
Dockerfileってなによ
簡単に言えば、「コンテナを作るときの説明書」および「手順書」のこと。
Dockerfileのおかげで以下
- dockerイメージを作成
- コンテナ内で行うコマンド操作
- 環境変数の設定
- コンテナ内で動作させるデーモン実行
をビルド時に実行してイメージを作成したりします。
ね!簡単でしょ?
Dockerfileの命令一覧
命令 | 説明 |
---|---|
FROM | ベースイメージの指定 |
MAINETAINER | Dockerfileの作成者情報 |
RUN | コマンド実行 |
VOLUME | ボリュームのマウント |
ADD | ファイル/ディレクトリの追加 |
COPY | ファイルのコピー |
CMD | デーモン実行 |
ENTRYPOINT | デーモン実行 |
LABEL | ラベルの設定 |
USER | ユーザの指定 |
EXPOSE | ポートのエクスポート |
WORKDIR | 作業ディレクトリの指定 |
ENV | 環境変数の設定 |
ONBUILD | ビルド完了後に実行される命令 |
上の表がDockerfileの命令です。 これを元にやっていきます。
今回はほんと簡単な命令しか書きません。
次回以降暇があれば記事にします。
実行環境
- ubuntu16.04.1(elementary OS 0.4.1 Loki)
- Docker version 17.12.0-ce
準備
わかりやすいようにディレクトリの準備をします。
$ cd ~ && mkdir docker-practice && cd !!$ && touch Dockerfile
homeディレクトリに移動してdocker-practiceディレクトリ作成&移動、Dockerfileを作成します。
FROM命令
DockerfileではコンテナはどのDockerイメージから生成するかという、「ベースイメージ」が必要なので、それをFROM命令で書いてあげます。
FROM イメージ名 or FROM イメージ名:タグ名 or FROM イメージ名@ダイジェスト
上記の形で書きます。
が、上2つだけ覚えておけばとりあえず大丈夫です。
たとえば、最新のubuntuイメージを取ってきたい場合は
FROM ubuntu:latest
でおk。超簡単。
試しにイメージを作ってみますか。
docker build -t <イメージ名> <Dockerfileのディレクトリ>
で実行してみる(<イメージ名>:<タグ名>でタグをつけることができます)。
# 作成したDockerfileと同じディレクトリにいるはずなので"."でおk $ docker build -t test . Sending build context to Docker daemon 2.048kB Step 1/1 : FROM ubuntu:latest latest: Pulling from library/ubuntu d3938036b19c: Pull complete a9b30c108bda: Pull complete 67de21feec18: Pull complete 817da545be2b: Pull complete d967c497ce23: Pull complete Digest: sha256:9ee3b83bcaa383e5e3b657f042f4034c92cdd50c03f73166c145c9ceaea9ba7c Status: Downloaded newer image for ubuntu:latest ---> c9d990395902 Successfully built c9d990395902 Successfully tagged test:latest
まあまあ時間かかりました。
ちゃんとDockerfileを元にイメージが作成されているか確認してみる。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test latest c9d990395902 2 days ago 113MB ubuntu latest c9d990395902 2 days ago 113MB
できてますね。
他のディレクトリにあるDockerfileを指定する時は、ディレクトリパスをdocker buildの最後に書いてあげてください。
今書いたDockerfileを元に別のイメージ名にしてdocker buildしてみると、前よりかなり早くbuildが完了するはず。
これは、ubuntu:latest
のベースイメージがローカル環境にダウンロードされているためです。
同じイメージを使用するときはかなり早くbuildできます。
RUN命令
コンテナ上で実行するコマンドの命令です。
CentOS系のyumとUbuntu系のapt-getを元に検索かけていけばいいと思いますよ(多分)。
さっきのイメージを元にApache
を入れてみたいと思います。
FROM ubuntu:latest # apt-getパッケージ管理のupdateとapache2のインストール RUN apt-get update && apt-get install -y apache2
※ apt
コマンドは使えませんでした。
↑
いけたけど、WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
が出てあんま推奨されてないっぽい。
じゃあbuildしましょう。
# リビルドするときはタグ名を後ろにつけたらおk $ docker build -t test:latest . ・ ・ ・ Step 1/2 : FROM ubuntu:latest ---> c9d990395902 Step 2/2 : RUN apt-get update && apt-get install -y apache2 ---> Using cache ---> 5a2551cf2ad8 Successfully built 5a2551cf2ad8 Successfully tagged test:latest
ちょっと確認
本当に入っているかどうか、コンテナの中に入って確認してみます。
$ docker run -it c9d990395902 /bin/bash #
これでさっきのイメージIDを元にコンテナの中に入れます。
# apache2 -v Server version: Apache/2.4.18 (Ubuntu) Server built: 2017-09-18T15:09:02
ちゃんとApache入ってました\(^o^)/
ここでctrl + p + q
を押せばコンテナを起動したまま出ることができますが、今回はその必要もないのでexit
コマンドで出ます。
exit
だとコンテナ起動と終了を一緒にやってくれます。
ちなみに
直接コンテナに入ってから、apt-get
で何かパッケージをインスコした場合、exitで出てしまうとそのインスコはなかったことになります。
これは、imageがbuildした際の状態を保っているからです。
なので、「あれ〜この前インスコしたのになぁ〜」ってなったときはこの可能性が多いです。
要注意です。まじで。
CMD命令
デーモン実行。
イメージを元に生成したコンテナ内でコマンドを実行するために使うやつ。
ちなみにこいつはDockerfile内で一つしかかけない。複数書いた場合は、最後のだけが実行される。
さっきのDockerfileの最後に、Apacheサーバーを立てるコマンドを記載してみます。
FROM ubuntu:latest # apt-getパッケージ管理のupdateとapache2のインストール RUN apt-get update && apt-get install -y apache2 # デーモン起動 CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
ここでちょっと詰まったのですが、デーモン起動の際に/usr/sbin/apache2
では起動しませんでした。
要注意です。
CentOSの場合は/usr/sbin/httpd
です。
コンテナを起動
docker run
でポート指定(-p
オプション) & デタッチド(-d
オプション)で起動します。
$ docker run -d -p 80:80 test or $ docker run -p 80:80 -d test
長い文字列が出ると思います。
なにか問題があればメッセージが出るはず。
本当に起動してるか確認しましょー。
docker ps
コマンドで。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 78fe3aafeada test "/usr/sbin/apachectl…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp nervous_morse
動いてなければここで表示されないです。 今回はちゃんと表示されているので問題なしです。
特定のものだけ表示したい場合はフォーマットを指定すればおk。
例えばこんな感じ。
$ docker ps --format={{.Image}} {{.Command}} {{.Ports}}
こうすれば、イメージ名と実行したコマンド、ポートが表示されます。参考程度に。
画面の確認
ポートを80 -> 80
に開放しているので単純にlocalhostでアクセスできます。
問題なさげ!
終わり
次回はファイルの追加やボリュームの指定、ポートのエクスポート等を簡単なDockerfileを元に作成したいと思います。
みんなDockerfileかけるようになろう(自問自答)。
ubuntuで初めてのDockerfile
今まで人が作ったDockerfileを使ってdocker build
していてほとんど触れていなかったのですが、それもDockerfileを作るのが難しいという勝手な苦手意識からでした。
ですがそうも言っていられないので、もっとdockerとお友達になるために超簡単なDockerfileを作成してみたいと思います。
環境
- ubuntu16.04.1(elementary OS 0.4.1 Loki)
- docker 17.12.0-ce
予想以上に簡単だった
最近Linuxに触れたからというのもあるとは思うのですが、結構簡単でした。
UNIXコマンドをDockerfileに書くことが多いので、Linuxの知識がある前提です。
Macでも同じようなコマンドが使えるのでLinuxを触っておいて損はないと思います。
てか、MacでubuntuやらCentOSやらのコンテナ立ててシェルに入ってコマンドの練習すればいいんじゃないですかね。
winは知らん。
Dockerfileを作成する
それぞれ命令の意味はリファレンスが一番わかり易いと思います。
Dockerfile リファレンス — Docker-docs-ja 17.06.Beta ドキュメント
なんか適当なディレクトリを作ってそこにDockerfileを作成します。
$ mkdir ~/docker-pratice && cd !!$ && touch Dockerfile
ベースイメージをCentOS7にしてapacheでサーバーを立ててみます。
$ vim Dockerfile FROM centos:centos7 RUN yum install -y httpd CMD ["usr/sbin/httpd", "-D", "FOREGROUND"]
多分これでおk。単純にCentOS上でapacheをインストールしてサーバー立てる命令を入れただけ。
ビルドするぞお
$ docker build -t docker-practice . ・ ・ ・ Complete! Removing intermediate container 1f221c2502d5 ---> 328e4875d499 Step 3/3 : CMD ["usr/sbin/httpd", "-D", "FOREGROUND"] ---> Running in 20abda19727c Removing intermediate container 20abda19727c ---> 9f2a89281a6a Successfully built 9f2a89281a6a Successfully tagged docker-practice:lates
ビルド成功したのでイメージが作成されているか確認。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker-practice latest 9f2a89281a6a 52 seconds ago 334MB
いけてますね\(^o^)/
作成したdockerイメージを起動する
先ほどのイメージでapacheコンテナを立てます。デタッチドでポートを指定して起動すれば行ける。
$ docker run -d -p 80:80 docker-practice
本当に起動しているのかわからんので一応確認。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 754fab174a33 docker-practice "usr/sbin/httpd -D F…" 10 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp gifted_boyd
おお動いてますね。
これでlocalhostにアクセスしてみる。
いけました\(^o^)/
最後に
立てたサーバーのコンテナは閉じるのを忘れないように。
$ docker stop 754fab174a33 #=> docker psで出てきたコンテナID
とりあえずここまで出来たらDockerfile作成できるって言っていいんじゃね?とか偉そうなこと思ってみたりする。
ubuntu(elementary OS)16.04.1へdocker-composeをインストール
前回のつづき的な感じです。
というか書き忘れてました\(^o^)/
リファレンスの言うとおり
以下を参照。
Docker Compose のインストール — Docker-docs-ja 17.06.Beta ドキュメント
最新のdocker-composeをcurlで取ってきます。
1.21.0-rc1がプレリリースされてますが安定しているかわかんないので一個前のやつにします。
$ curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose bash: /usr/local/bin/docker-compose: 許可がありません
許可がないみたいなので、sudoでやっちゃう。
$ curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` > sudo /usr/local/bin/docker-compose #=> まあまあ時間かかる
いけた!
docker-composeに対して実行権限を与えます。
$ chmod +x /usr/local/bin/docker-compose
ここでchmod: '/usr/local/bin/docker-compose' にアクセスできません: そのようなファイルやディレクトリはありませんと言われました。
見てみると、docker-composeファイルが存在しない。
てなわけで、root権限でcurlします。
$ sudo -i # curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # chmod +x /usr/local/bin/docker-compose # exit #=>root権限から抜ける
確認
$ docker-compose -v docker-compose version 1.20.1, build 5d8c71b
無事docker-composeが入りました。
引き続きdocker教科書をやっていきまっす。
ubuntu(elementary OS)16.04.1へdockerをインストール
今更ですが、新しいPCでもdockerの環境が必要となってきたので構築しました。
dockerリファレンスを参考にやっていきます(手順は全くそのままです)。
今回はDockerCE(コミュニティ版)をインスコしていきますよ。
URL http://docs.docker.jp/engine/installation/linux/docker-ce/ubuntu.html
まずは必要なパッケージをインストール
httpsを通してaptが使えるようにします。
$ sudo apt install \ > apt-transport-https \ > ca-certificates \ > curl \ > software-properties-common
リファレンスの方ではapt-get
を使っていますが、諸事情によりapt
コマンドです。
「再起動が必要」とか言ってくるかもしれないですが、スルーです。
こういった記事があるので参照するといいかもね(しらんけど)。
DockerのGPG鍵の追加
curl
で取ってくる。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - OK
OKと返ってきた(よーわからんけど)。
fingerprintやらがあるらしいので確認してみる。
$ sudo apt-key fingerprint 0EBFCD88 pub 4096R/0EBFCD88 2017-02-22 フィンガー・プリント = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker Release (CE deb) <docker@docker.com> sub 4096R/F273FCD8 2017-02-22
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
がちゃんと返ってきました。よかったぁ。
dockerの安定版を設定する
まずは。自分のubuntuが32bitなのか64bitなのか確認。
僕の場合は64bitなのでamd64
にのっているコマンドを打ちます。
一応確認方法は以下
$ uname -a LinuxHP-Spectre-x360-Convertible-13-ac0XX 4.13.0-38-generic #43~16.04.1-Ubuntu SMP Wed Mar 14 17:48:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
x86_64
とかamd64
と書かれていれば64bit、i686
とか書かれていれば32bit。
上のがわかりにくければ以下のコマンド。
$ getconf LONG_BIT 64
32bitであれば32と出てくるはずです(しらんけどな)。
amd64用のコマンド
$ sudo add-apt-repository \ > "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ > $(lsb_release -cs) \ > stable"
多分これでおk。
dockerCEのインスコ
apt
を更新する。
$ sudo apt update ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease 無視:3 http://dl.google.com/linux/chrome/deb stable InRelease ヒット:4 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease ヒット:5 http://dl.google.com/linux/chrome/deb stable Release ヒット:7 http://security.ubuntu.com/ubuntu xenial-security InRelease ヒット:8 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial InRelease 無視:9 https://download.docker.com/linux/ubuntu loki InRelease 取得:10 http://packages.elementary.io/appcenter xenial InRelease [6,128 B] エラー:11 https://download.docker.com/linux/ubuntu loki Release 404 Not Found ヒット:12 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial InRelease 取得:13 http://packages.elementary.io/appcenter xenial/main amd64 DEP-11 Metadata [63.4 kB] ヒット:14 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease ヒット:15 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease パッケージリストを読み込んでいます... 完了 E: リポジトリ https://download.docker.com/linux/ubuntu loki Release には Release ファイルがありません。 N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。 N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
https://download.docker.com/linux/ubuntu 上記URLから404が返ってきてるんですけど。イミフ。
一旦再起動してみた
ダメでした\(^o^)/
なので、こちらを参考にしてみてubuntu最新のdocker-ceをインスコします。
ubuntu17.10にdockerをインストールする方法 : 試行錯誤な日々
まずはリポジトリの削除
add-apt-repository
に-r
オプションをつけるとリポジトリを削除できます。んで、zestyってやつが最新みたいなのでそれを指定してリポジトリを作ってみる。
$ sudo add-apt-repository -r "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ > $(lsb_release -cs) \ > stable" $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ > zesty \ > stable"
これでおk。
sudo apt updateだ
$ sudo apt update ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease 無視:3 http://dl.google.com/linux/chrome/deb stable InRelease ヒット:4 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease 取得:5 https://download.docker.com/linux/ubuntu zesty InRelease [49.8 kB] ヒット:6 http://dl.google.com/linux/chrome/deb stable Release ヒット:8 http://ppa.launchpad.net/elementary-os/stable/ubuntu xenial InRelease 取得:9 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB] 取得:10 http://packages.elementary.io/appcenter xenial InRelease [6,128 B] 取得:11 https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages [2,477 B] ヒット:12 http://ppa.launchpad.net/elementary-os/os-patches/ubuntu xenial InRelease 取得:13 http://packages.elementary.io/appcenter xenial/main amd64 DEP-11 Metadata [64.1 kB] ヒット:14 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease ヒット:15 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease 225 kB を 1秒 で取得しました (117 kB/s) パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 パッケージはすべて最新です。
いけたぜぇ。
以下手順通りやっていく。
$ sudo apt install docker-ce $ docker -v Docker version 17.12.0-ce, build c97c6d6
無事docker-ceが入りました\(^o^)/
$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:97ce6fa4b6cdc0790cda65fe7290b74cfebd9fa0c9b8c38e979330d547d22ce1 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/
hello-world
もできましたよっと。
引き続きdockerの勉強をやっていきますb
android studioでkotlinのバージョンをあげたらエラー出るので困った
android studioを立ち上げた時にポップアップでkotlinのupdateが出てきたので、なにも気にせずupdateしました。
すると。。。
outdated kotlin runtime
なんか出た。
とりあえずUpdate Runtime
を押してみる。
はあ。。。
自動でkotlinバージョンを変えることはできないので手動でやらないといけないっぽいです。
まずどこを見たか
Gradle Script
配下のbuild.gradle(Project:~~)
を確認してみます。
kotlinのバージョンは1.1.51
と。
実際どうなってんでしょうね。
Tools -> kotlin -> Configure Kotlin Plugin Updates
で見れました。
その後にChecks for updates now
をクリックしてちょっとすると出てきます。
...バージョン違いますね。
てなわけで修正
ext.kotlin_version
を今のバージョンに変えてあげます。
1.1.51
から1.2.30
へ修正。
すると上になんか出てきます。Sync Now
をクリック。
問題なければ成功します。以下がそれ。Grandle Console
に出てきます。
おわり
とりあえずいけましたー
すすめるごとにエラー出るので頑張る
【雑記】ubuntuでスーファミやってみた
タイトル通りです。
せっかくの祝日、久しぶりにスーパーマリオRPGがやりたくなったのでやってみました。
本当はSnes9xっていうエミュレーターを入れたかったんですが、やり方がよくわからない早くゲームをしたかったのでZsnesというエミュレーターをいれました。
環境
- ubuntu 16.04.1 (elementaryOS)
準備
至って簡単です。
以下のコマンドで必要なものが入ります。
$ sudo apt install zsnes
なんかいっぱい依存関係のパッケージが入りました。
ジョイパッドの設定
いつもお世話になっているのがこの子。
buffaloのスーファミコントローラーです。
iBUFFALO USBゲームパッド 8ボタン スーパーファミコン風 グレー BSGP801GY
専用のドライバを入れます。
$ sudo apt install joystick
あと、キー配置とか変更したいときにGUIで操作できるやつも入れちゃいます。
$ sudo apt install jstest-gtk
これでおk。
ちょっと起動してみる
Zsnesのインストールがうまくいっていればアイコンが表示されます。
開くとこんな感じ。
開いた瞬間若干ノイズが入りました。
やっぱり他の記事でも見たとおり音質はあまり良くないみたいですね〜。
なのでそれっぽいSDKをいれます。
$ sudo apt install libsdl1.2debian-oss
これで一度PC再起動します。
起動したら以下のコマンドをターミナルで打って起動するらしい。
$ zsnes -ad sdl
解像度&ジョイパッドの設定
※ここからはジョイパッドを接続した状態で進めていってください。Zsnesにジョイパッドが認識されていなければZsnesを再起動し、再度ジョイパッドを接続してから行ってください。
まず解像度の設定。「option」→「video」を選択します。
するとよくわからん画面が出てくる。
とりあえずSかRのやつを選んでたらよさ気。Fはフルスクリーンモードらしいのでちょっと不便かなと思ってWがついてるやつにしました。
これくらいかな。
次にジョイパッドの設定。「option」→「input」を選択。(その前に)
するとそれっぽい画面が出てきます。
手順通りいきます。upの枠を選択。するとupで使用するボタンを押せと出てくるはず。
言われたとおり、ジョイパッドの上十字キーを押下。
ジョイパッドの上十字キーが割り当てられました!(J03ってなってますね)
同じように全部割り当てます。
こんな感じですね。キーボードのTをターボに割り当ててます。面倒くさい戦闘のときとかに使います。
後で気づいたんですが、「set keys」を押したらupから順に割り当てていくことができますね。枠を選択するの面倒なので、こっちのほうが便利です。
saveの保存先指定
デフォルトがどこになっているかわからないですが、作っていきます。
おそらくですがホームディレクトリに.zsnes
フォルダができているはずです。その配下にsave
フォルダを作成します。
$ cd ~/.zsnes $ mkdir save $ cd save $ pwd /home/user/.zsnes/save ## userのところは表示されたものに適宜置き換えてくださいね!!
次にZsnesで「option」→「path」を選択。
savesとかかれているところに先ほどのパスを入力(なぜか全角になるけど気にしないことにする)。
これで多分準備おk!!!!!
ゲームを起動!
あらゆる手段で用意しておいたROMファイルを読み込みます(ROMはもちろん吸い出してね)。
僕の場合は/home/document/snesrom
配下にromファイルを入れるようにしました。好きなようにしていいと思います。
FFVが開きました!!!
マリオRPGも!!
終わりに
esc
ボタンを押せば止まってメニューが出てきます。
快適なゲームライフをどうぞ。
参考