Docker雑記


dockerは砂箱機構を用い,容器は互いに何の関係もなく,さらに重要なのは性能オーバーヘッドが極めて低いことである.個人的には、この技術も仮想マシンの一種と考えられていますが、その仮想方式は従来のvmwareとは異なり、ハードウェアデバイスをシミュレートする必要がないため、リソース損失が小さくなります.

Dockerのインストール:


linuxは直接インストールできます.直接yumでいいです.
yum -y install docker-io

Docker基本コマンド:


コンテナの検索:
docker images // 
docker search [ ]// , 

コンテナの実行:
docker run -it cocktailgu/ssh:v2 /usr/sbin/sshd -D
docker run -d cocktailgu/ssh:v2 /usr/sbin/sshd -D

-tコンテナを実行してshellインタフェースに入ります-dコンテナを実行し、バックグラウンドでずっと実行します注意:-tまたは-dのパラメータがなければ、実行が終わったら直接コンテナcocktailgu/sshコンテナミラーの倉庫名を終了します.後ろのパラメータはラベル名/usr/sbin/sshd-Dがこのコンテナをロードした後に入力したコマンドで、例はsshを開くサービスです.
docker run -d -p 99:80name web2 test:v2

-pマッピングポート、ホストの99ポートへのアクセス、コンテナへのアクセスに相当する80ポート-nameコンテナの別名の実行
コンテナの運転状態:
docker ps
docker kill [ id\ ps ] // 

コンテナミラーを削除するには
docker rmi 0bdc9f543b07

0 bdc 9 f 543 b 07:docker imagesで表示されるimagesID
実行中のコンテナに再アクセスするには、次の手順に従います.
コンテナに入ったshellインタフェースでは、crtl+p+qで現在のコンテナを一時停止し、ホスト端末インタフェースに終了し、次のコマンドでコンテナに再アクセスできます.
docker attach 0bdc9f543b07

0 bdc 9 f 543 b 07:docker psで見るContainer ID

新しいコンテナ:


新しいコンテナはすべて既存のベースコンテナの上に構築され、CentOSを例にとると、例えばこのシステムにnginxをインストールする必要があり、2つの方法で行うことができ、1つ目はCentOSのベースコンテナのshellインタフェースに入ってインストールを行った後に終了し、docker commitコマンドを入力することである.2つ目はdockerfileを作成した後、docker buildコマンドを入力して確立することです.
1つ目:
既存のコンテナのshellの下に入って操作し、操作が完了したらexit、次のコマンドを入力します.
docker commit -m "added xxx" -a "cocktail" 74e905399028 testadduser:v2

-m説明-aユーザ情報74 e 905399028コンテナのid testadduser:v 2コロン前はコンテナのrepositoryの名前で、後はTAG commit後に新しいコンテナが生成されます
2つ目:
新しいdockerfileファイルを作成し、次のように入力します.
FROM testyum

MAINTAINER cocktail

RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel gcc-c++
RUN wget http://nginx.org/download/nginx-1.8.0.tar.gz
RUN tar -zxvf nginx-1.8.0.tar.gz
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.8.0 && ./configure --prefix=/usr/local/nginx && make && make install

EXPOSE 80

CMD ["/usr/local/nginx/nginx"]

FROM:ベースミラーですが、centosのベースパッケージでyumのコマンドが使えないことに気づきました.centosを利用して自分のベースパッケージを作ってから使えます.
ADD:現在のディレクトリの下のファイルをコンテナシステムに入れることができます
ENV:環境コマンドを設定します.たとえば
ENV DEBIAN_FRONTEND noninteractive

VOLUME:共有ディレクトリです.このディレクトリは他のコンテナで使用できます.たとえば、コンテナにパラメータを追加する必要があります.
docker run -it --name cocktailtest3 --volumes-from e70d649bf21a testuseradd

name:コンテナのロード後の別名です.別名はvolume-fromの操作を容易にするためにのみ使用されます.後に追加されたのはコンテナのidです.または、コンテナの別名(実行中のコンテナの場合)testuseraddを使用します.現在実行するコンテナrepositoryの名前です.
WORKDIR:起動後の作業ディレクトリをworkerディレクトリに切り替え、次のRUN,CMD,ENTRYPOINT,COPY,ADDなどのコマンドがその作業ディレクトリの下で行われ、存在しない場合に作成されます.
ENTRYPOINT:コンテナ起動後に実行されるコマンドで、コンテナ実行を実行可能プログラムのように表現させ、CMDとの違いはdocker runで上書きしてはいけません.docker runの後ろのパラメータをENTRYPOINTコマンドに渡すパラメータとします.DockerfileではENTRYPOINTは1つしか指定できませんが、多く指定されている場合は最後の1つだけ有効です.docker runコマンドの-entrypointパラメータは、指定したパラメータをENTRYPOINTに渡し続けることができます.