備忘録

備忘録

DockerをCentOS7.6にインストールする方法

Ⅰ. はじめに

タイトルの通り「DockerをCentOS7.6にインストールする方法」です。

Ⅱ. やり方

1. Docker をインストールする
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce
2. Docker を起動する
systemctl start docker
3. Docker でhello worldする
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
hello-world を削除する(オプション)
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        2 weeks ago         1.84kB

$ docker rmi -f fce289e99eb9
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e

.NET CoreコンソールアプリケーションをDockerで動かす方法

Ⅰ. はじめに

タイトルの通り「.NET CoreコンソールアプリケーションをDockerで動かす方法」です。

Ⅱ. 環境

  • Docker 18.09.1
  • .NET Core 2.2

Ⅱ. やり方

1. 適当なコンソールアプリケーションを作成する

f:id:kagasu:20190116095321p:plain

Program.cs

static void Main(string[] args)
{
  Console.WriteLine($"Hello Docker! {args[0]}");
}

Dockerfile
※VisualStudioでDockerfileのプロパティを「出力ディレクトリにコピー」を「新しい場合はコピーする」に変更する

FROM microsoft/dotnet:2.2-runtime
WORKDIR /app
COPY . .

ENTRYPOINT ["dotnet", "HelloDocker.dll", "abc"]
2.アプリケーションを発行する
dotnet publish -c Release
3.Dockerイメージをビルドする
cd HelloDocker/HelloDocker/bin/Release/netcoreapp2.2/publish
docker build . -t test
4. Dockerコンテナを起動する
$ docker run test
Hello Docker! abc

Androidコマンドライン ツールのみを利用してplatform-toolsをインストールする方法

Ⅰ. はじめに

タイトルの通り「Androidコマンドライン ツールのみを利用してplatform-toolsをインストールする方法」です。

Ⅱ. やり方

2. 任意のディレクトリに展開する
3. platform-tools をインストールする
sdkmanager platform-tools
実行結果

f:id:kagasu:20190113002308p:plain

.NET CoreのアプリケーションをCoreRTを利用してビルドする方法

Ⅰ. はじめに

タイトルの通り「.NET CoreのアプリケーションをCoreRTを利用してビルドする方法」です。

CoreRTを利用することにより以下の恩恵が受けられます。

  • 1つの実行ファイルのみ出力される
  • ネイティブコードを出力する為JITより高速
  • 配布先のPCで.NET ランタイムをインストールする必要がない

Ⅱ. やり方(Windows

環境
1. プロジェクトを作成する
dotnet new console -o myApp
cd myApp
dotnet new nuget
notepad nuget.config

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>
dotnet add package Microsoft.DotNet.ILCompiler -v 1.0.0-alpha-* 
2. ビルドする
dotnet publish -r win-x64 -c Release
3. 実行結果
> bin\Release\netcoreapp2.2\win-x64\publish\myApp.exe
Hello World!

Ⅲ. やり方(Linux

環境
1. 必要なものをインストールする
sudo apt-get install cmake clang-3.9 uuid-dev libcurl4-openssl-dev zlib1g-dev libkrb5-dev

wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7ubuntu0.4_amd64.deb
sudo dpkg -i libicu55_55.1-7ubuntu0.4_amd64.deb
2. プロジェクトを作成する
dotnet new console -o myApp
cd myApp
dotnet new nuget
vim nuget.config

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>
dotnet add package Microsoft.DotNet.ILCompiler -v 1.0.0-alpha-* 
3. ビルドする
dotnet publish -r linux-x64 -c Release
4. 実行結果
$ ./bin/release/netcoreapp2.2/linux-x64/publish/myApp 
Hello World!

その他

Q. クロスコンパイルは可能ですか?

A. 不可能です。(2019/01/04時点)
https://github.com/dotnet/corert/issues/5458

Q. IL2CPPは利用できますか?

A. できます。しかし開発段階の為不安定です。(2019/01/04時点)

dotnet publish /p:NativeCodeGen=cpp -r win-x64 -c Release