ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

Docker MS SQL Server 2017 for linux

Docker用SQL Server 2017を起動してみる。

参考:https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker

Dockerのメモリを4G にする必要がある。

  • 最上位のステータス バーに Docker ロゴをクリックします。
  • 選択設定です。
  • メモリ インジケーターを 4 GB 以上に移動します。
  • クリックして、再起動画面のボタンをクリックします。

Sql Server 2017の最新イメージをダウンロードする。

$ docker pull microsoft/mssql-server-linux:2017-latest
2017-latest: Pulling from microsoft/mssql-server-linux
aed15891ba52: Pull complete 
773ae8583d14: Pull complete 
d1d48771f782: Pull complete 
cd3d6cd6c0cf: Pull complete 
8ff6f8a9120c: Pull complete 
1fd7e8b10447: Pull complete 
bd485157db89: Pull complete 
273a1970ce9c: Pull complete 
006581b3a024: Pull complete 
25c54ac351f0: Pull complete 
Digest: sha256:77ebcec549076994f93ab85c5ce194e85366d9bcd124c53e1347660edd315666
Status: Downloaded newer image for microsoft/mssql-server-linux:2017-latest

コンテナの作成/実行

$ docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -e 'MSSQL_PID=Developer' -p 1433:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest

※ポートフォワードは1433を指定しないとManagementStudioから繋がらなかった。

バックアップファイルからの復元

ManagementStudioから見た感じ、「/var/opt/mssql/data」しか接近が許可されていなかったため、ホストから、指定フォルダーにバックアップファイルをコピーする。

$ docker cp /work/mssql.bak sql1:/var/opt/mssql/data

ManagementStudioから復元

普通に出来たので、説明は不要かな…

ManagementStudio以外でSQL Serverへ接続する方法

復元済みのバックアップファイルを削除している。

$ docker exec -it sql1 "bash"
$ rm /var/opt/mssql/data/mssql.bak

sqlcmdの実行

Pathは設定されていないため、直接実行する。

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'"

Docker コンテナ操作

ホストからコンテナへファイルをコピー

「docker cp {コンテナ名}:{パス} {パス}」

$ docker cp c-name1:/tmp/etc /tmp/tec
$ docker cp ./local.txt c-name1:/tmp/test.txt

イメージからコンテナになってからの差分確認

「docker diff {コンテナ名}」

$ docker diff c-name1

コンテナからのイメージ作成

「docker commit {コンテナ名} {新しいイメージ名}:{タグ名}」

$ docker commit c-name1 newimagename:1

$ docker inspect newimagename:1
[
    {
        "Id": "sha256:45800e187f8854e5f11d865b73dad4c1f2019dfd04aaa2bffe7600cedae6bb02",
        "RepoTags": [
 /省略/

コンテナをTarファイル出力

「docker export {コンテナID}」

$ docker export c-name > filename.tar

$ tar -tvf filename.tar
/省略/

tarファイルからイメージ作成

「docker import {ファイル名/URL} 」

$ cat filename.tar | docker import - newname:1

イメージをtarフィアルへ保存

「docker save {イメージID}」

$ docker save -o filename.tar image1

※saveで生成したtarファイルはイメージのバイナルデータとなっているため、loadコマンドによってイメージに戻すことが出来る。

Docker コンテナの作成/実行

Docker コンテナ

イメージをベースとして実行された実行環境

コンテナの作成/実行

docker run -it --name {コンテナ名} {イメージ名} {実行コマンド}

※イメージ名はローカルにない場合、ダウンロードされる。

run コマンド  =(createコマンド+startコマンド)

createコマンド:コンテナを作成のみ

startコマンド:作成済みのコンテナを開始する。

$ docker run -it --name my-server docker.io/centos:6 /bin/bash
root@aec32698405e :/# 

CentOsベースイメージから、コンテナ名my-serverを作成・起動する。 コンテナにログイン状態になる

よく使うオプションについて

オプション 内容
-i, --interative=false コンテナの標準入力を開く
-t, --tty=false tty(端末デバイス)を使う
-d, --detach=false コンテナを生成し、バックグラウンドで実行する
--name コンテナ名

バックグラウンドで起動する。

「-d」オプションでバックグラウンド起動にんる。 「-itd」でもOK

 docker run -itd --name my-server docker.io/centos:6 /bin/bash

CentOsベースイメージから、コンテナ名my-serverを作成・起動する。 コンテナにログインはしない

ポートフォワード

「-p {ホストのポート}:{コンテナのポート}」 オプション指定でホストのポートをコンテナの指定ポートへ転送する。

 docker run -itd -p 8080:80 --name my-server docker.io/centos:6 /bin/bash

ホストの8080ポートをコンテナの80ポートへ転送する。

共有ディレクトリ指定

「-v {ホストのパス}:{コンテナのパス}」ホストのフォルダをコンテナ内部のフォルダに共有する。

 docker run -itd -v /var/www:/var/www --name my-server docker.io/centos:6 /bin/bash

ホストのvar/wwwをコンテナのvar/wwwへ共有する。

「:ro」共有フォルダを読み取り専用にする。

 docker run -itd -v /var/www:/var/www:ro --name my-server docker.io/centos:6 /bin/bash

ホスト名指定

「-h {ホスト名}」ホスト名を指定する事が出来ます。

 docker run -itd -h dbserver --name my-server docker.io/centos:6 /bin/bash
[root@dbserver /]#

/etc/hostsにホスト情報追加

「--add-host={ホストドメイン名}:{IPAddress}」

 docker run -itd --add-host=mydomain.com:127.0.0.1 --name my-server docker.io/centos:6 /bin/bash

※複数の場合、複数指定可能「--add-host=mydomain.com:127.0.0.1 --add-host=mydomain2.com:127.0.0.1

コンテナでコマンド実行後、コンテナを自動破棄する

「--rm」オプションを指定すると、コンテナを起動して指定のコマンド実行し、コマンド終了後にコンテナを自動で破棄します。

docker run -it -rm my:mysql /etc/my.cnf

作成されたコンテナの確認

稼働中のコンテナを表示します。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
f60487285325        hello-world         "/hello"            2 seconds ago       Exited (0) 2 seconds ago                        nostalgic_goldstine

すべてのコンテナを表示します。

docker ps -a

コンテナの削除

「 docker rm {コンテナID}」

$ docker rm a403ffe73d31
a403ffe73d31

※全コンテナの削除

$ docker rm `docker ps -a -q`

コンテナの開始/停止

$ docker stop {コンテナID}
$ docker start {コンテナID}

起動中のコンテナに接続

「exec」コマンドで起動中のコンテナに接続する 「docker exec -it {コンテナ名} {コマンド}」 「docker exec -u {ユーザID} -it {コンテナ名} {コマンド}」

$ docker exec -it dbserser /bin/bash
[root@dbserver /]#
$ docker exec -u vagrant -it dbserser /bin/bash

環境変数をファイル指定する

「--env-file={ファイル名}」ファイブのフィアルに環境変数を設定し起動すると環境変数が適用される

env_list

foo=bar
hoge=fuga
$ docker run -itd --env-file=env_list --name my-server docker.io/centos:6 /bin/bash

Docker イメージ管理

Docker Image

コンテナの実行ベースとなるイメージ

docker imageの検索

取得可能なDocker Imageを検索する。

docker search {キーワード}

$ docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   3685                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              102                                     [OK]
jdeathe/centos-ssh                 CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x8...   86                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      33                                      
/省略/

Imageの取得

イメージをローカルにダウンロードする。

docker pull {イメージ名}

docker pull {イメージ名}:{バージョンなど}

$ docker pull centos:7

CentOS 7 のオフィシャルビルドイメージを取得する場合

イメージの一覧表示

取得したイメージを確認する。

docker images

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
microsoft/dotnet    latest              592ef818dec2        14 hours ago        1.64GB

イメージの削除

ローカルのイメージを削除する。

docker rmi {イメージID}

$ docker rmi 592ef818dec2
Untagged: microsoft/dotnet:latest
Untagged: microsoft/dotnet@sha256:598bd67b0fc81b76564037ef61d48617bcf90844252363d8fc02f587adbc8661
Deleted: sha256:592ef818dec21896aea7e0684de4cba894746760c7b6d0e15d65944610987a1f
Deleted: sha256:5055c521ee25addb31f07c1bc2a0ac32f47d5b3eed6a938d42ae5cda29f93176

関連イメージも同時に削除される。

※強制削除

$ docker rmi -f 592ef818dec2

マウスのスクロール方向を逆にする方法

Windows10でBlueToothマウスのスクロール方向を逆にする方法。

まず、設定からデバイスに移動する。

f:id:haronoid:20170919225018p:plain

左のマウスを選択し、「その他のマウスオプション」を選択する。

f:id:haronoid:20170919225131p:plain

マウスプロパティから「ハードウェア」タブを選択し、「プロパティ」を開く。

f:id:haronoid:20170919225230p:plain

プロパティウィンドウから、「詳細」、ハードウェアIDを選択する。

f:id:haronoid:20170919225327p:plain

HID‗で始まる内容から、VIDで始まる部分がハードウェアIDとなるため、 レジストリエディタより以下の「FlipFlopWheel」を0から1へ変更する。

f:id:haronoid:20170919225454p:plain

レジストリエディタは「Ctrl+R」で「regedit」で実行すると起動する。

Bluetoothマウスも基本はHID準拠マウスドライバを利用するため、このハードウェアIDの修正により、Bluetoothマウスにも適用される。

git よく使う命令メモ

git init

作業フォルダーの初期化、新しいレポジトリとして使用します。

現在のフォルダーをリポジトリとして初期化
$ git init
現在のフォルダーをリモートレポジトリとして初期化
$ git init --bare

git add

ファイルまたはフォルダーをインデックスに追加
##git add filename

git rm

指定ファイルをインデックスから削除
$ git rm filename
ファイルを残したままインデックスからのみ削除
$ git rm --cached filename

git mv

ファイルの移動・リネーム

$ git mv filename new_filename

git branch

ローカルブランチリストを表示
$ git branch
リモートブランチリストを表示
$ git branch -r
全ブランチリストを表示
$ git branch -a
masterブランチの起点より、新しいnew_branchを生成
$ git branch new_branch master
ブランチ名を変更
$ git branch old_name new_name
ブランチを削除
$ git branch -d del_name
ブランチを削除(強制)
$ git branch -D del_name

git checkout

ブランチの切り替え

ローカルブランチの切り替え
$ git checkout branch_name
リモートブランチから、ローカルブランチへチェックアウト
$ git checkout -b new_branch origin/order_branch

git commit

コミット時のメッセージを指定しコミットする
$ git commit -m "message"
コミット時のメッセージを複数行に指定する。
$ git commit -m "message1" -m "message2"

git fetch

リモートブランチから最新履歴を取得

git merge

ブランチをマージします。

$ git checkout workbranch
現在のブランチを指定ブランチ時点までマージする(workbranch-> dev)
$ git merge dev
現在のブランチをリモートブランチのHEADまでマージする(workbranch -> origin/dev)
$ git merge origin/dev

git rebase

ローカルブランチのブランチをリベースする

$ git checkout workbranch
ローカルブランチからリベース
$ git rebase dev
リモートブランチからリベース
$ git rebase origin/dev

git pull

リモートブランチから git fetch, git mergeを同時に実行した状態になる

git push

リモートブランチを更新する

$ git checkout workbranch
$ git push origin/dev

git log

$ git log
ファイル毎ぼ削除、追加行数を表示
$ git log --numstat
変更したファイルを表示
$ git log --name-status
見やすい形のログ表示
$ git log --oneline --graph --decorate

alias指定するなら

[alias]
    graph = log --graph --date=short --pretty=\"format:%C(yellow)%h %C(cyan)%ad %C(green)%an%Creset%x09%s %C(red)%d%Creset\"

gmailのPOP3アカウントのメールチェックを遅延を減らす方法

GmailPOP3メールチェックは1時間毎に行われる。

変更出来ないオプションなので、対応には拡張機能を入れる必要がある。

参考情報:GmailのPOP3によるメール受信の遅延を減らす方法

本家の方にもインストール方法がリンク込みで記載されている(英語)
Gmail POP3 Checker – Daniel Slaughter