Dockerの概要:
-
仮想マシンと比較すると、Dockerは占有スペースが小さく、起動速度(秒単位)が高速で、統合度が高いため、バージョンの非互換性の問題を効果的に回避できます。
-
ミラーリングとは:ミラーリングとは、読み取り専用のレイヤーの集まりを統合したものです。下のレイヤーがポイントしないことを除いて、各レイヤーはその親レイヤーをポイントします。統合ファイルシステム(Union?File System)テクノロジは、さまざまなレイヤーをファイルシステムに統合して、これらのレイヤーに統一されたパースペクティブを提供し、複数のレイヤーの存在を隠すことができます。ユーザーの観点からは、ファイルシステムは1つだけです。ミラーの各レイヤーは書き込み可能ではなく、読み取り専用レイヤーです。
コンテナとは:コンテナの定義は画像とほとんど同じであり、レイヤのスタックの統一されたビューでもあります。唯一の違いは、コンテナの最上位レイヤが読み取りおよび書き込み可能であることです。重要なポイント:コンテナー=ミラー+読み取り/書き込みレイヤー。コンテナーの定義では、コンテナーを実行するかどうかについては言及されていません。Dockerコンテナーとイメージの違い
を理解するために、練習後に戻ってくることをお勧めします -
一般的な操作
dockerイメージ:すべてのイメージを表示
docker rmi image-id:イメージを削除
docker ps -a:すべてのコンテナーを表示
docker rm container-id:コンテナーを削除
docker attach container-id:コンテナーに入る(現在は基本的にexecを使用し、コンテナーを閉じずに終了) )
Dockerログのcontainer-idコンテナーの内部出力を表示します
docker tag imageid:tag name:tagイメージ名を変更しますdocker
commit:コンテナーの読み取り/書き込みレイヤーを読み取り専用レイヤーに変換して、コンテナーが不変のイメージに変換されるようにします。 -
高山
テキスト:Djangoプロジェクトのリリース
1.ファイルツリーを作成する
compose
——downline(offline)
—Dockerfile(build image file)
—pip.conf(accelerated pip download speed)
—AIRS(project file)
—requirements.txt(installation directory)
—start.sh(startup file)——
upline (オンライン)
2. .git clone ***プロジェクトファイルをAIRS
3に保存します。.cp ./AIRS/requireme ./requirementsインストールする要件ファイルをDockerfileと同じディレクトリに保存します。4
. pip.confファイルを書き込みますvim pip .conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
~
5. start.sh vim start.shと書き込みます
python manage.py runserver 0.0.0.0:8000
6. Dockerfileを作成する
#基础镜像 docker pull python:3.6
FROM python:3.6
#定义环境变量
ENV PYTHONUNBUFFERED 1
#将pip.con转移到新镜像的 /root/.pip/pip.conf
COPY pip.conf /root/.pip/pip.conf
#将项目存放到/app文件夹下
COPY AIRS/ /app
#将需要下载的requirements.txt放入工作目录/app下
COPY requirements.txt /app/requirements.txt
#开始下载依赖包
RUN pip install -r /app/requirements.txt
#确定工作目录
WORKDIR /app
#将启动文件放入镜像
copy ./start.sh /app/start.sh
RUN chmod +x /app/start.sh
CMD ["sh", "start.sh"]
7.画像を作成する
#docker build -t="用户名/镜像名称:版本(tag) " .(当前目录)
docker build -t="horn/airs:v1.0" .
8.コンテナを起動します
#-d 后台运行
#-i 打开STDIN,用于控制台交互
#-t 分配tty设备,该可以支持终端登录,默认为false
#-p 指定容器暴露的端口
#-u 指定容器的用户
#--name 给容器起别名
[root@horn downline]# docker run -d -p 1935:8000 horn/airs:v1.0 python manage.py runserver 0.0.0.0:8000
#显示所有容器
docker ps -a
9.起動は成功したが、外部からはアクセスできない
方法1:コンテナ内のファイルをコピーして変更する、欠点(問題)
#将当前目录settings.py 复制到 containerid:/app/推荐系统/settings.py
docker cp ./settings.py 7ed:/app/推荐系统/settings.py
方法2:コンテナーを直接入力して構成ファイルを変更します。欠点は、vimをインストールする必要があるため、コンテナーのフットプリントが増えることです。
docker run -i –t centos /bin/bash
or
docker exec -it container-id /bin/bash
#获取docker镜像root权限
sudo docker exec -ti -u root container-id /bin/bash
#退出后重启容器: docker restart container
10. Dockerウェアハウス
(1)Docker ログイン
(2)docker account-> username / image nameに従ってイメージ名を変更します
docker tag imageid:tag name:tag
(3)イメージをDockerウェアハウスに保管する
docker push 用户名/镜像名
11.画像を修正する
sudo docker commit -m 'modify settings.py' -a "docker horn1998" 9c54 horn1998/airs:v2.0
そのうち、-mは、使用するバージョン管理ツールと同じように、送信された説明情報を指定します。-aは、更新されたユーザー情報を指定できます。その後に、ミラーの作成に使用されるコンテナのID 9c54が続きます;最後にターゲットミラーウェアハウス名とタグ情報を指定します。作成に成功すると、この画像のID情報が返されます。
12. docker-compose
1. クイックインストール
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
2.変数の解釈
- 画像:画像の名前またはIDを指定します。画像がローカルに存在しない場合、Composeは画像をプルしようとします
image: python:3.6-alpine
- build:Dockerfileに基づいてイメージを構築します
- args:ビルドプロセス中にshファイルで必要な環境変数を定義しますが、ビルドが成功するとキャンセルされます
e1:build: . #当前目录下寻找Dockerfile,如果同时指定了build, image,则Compose会构建镜像并且把镜像命名为image对应的名字
e2:build:
context:.
args:
build:1
password: secret
- コマンド:コンテナーの開始後に実行されるデフォルトのコマンドをオーバーライドできます
command: python manage.py runserver 0.0.0.0:8000
- depends_on:コンテナーの起動シーケンスが必要です。コンテナーの起動シーケンスを制御して、コンテナーの依存関係の問題による起動の失敗を防ぎます
depends_on:
-db #其它服务名称
-
CMD:コンテナーを起動した後、デフォルトのコマンドとパラメーターを提供します(必ずしも実行されるわけではありませんが、デフォルトです)。パラメーターの背後でdocker runが実行され
、コンテナーの実行中にいくつかのコマンドとパラメーターを提供するためにCMDが置き換えられます。使用方法は次のとおりです。
最初の使用方法:実行可能ファイルを実行します。ファイルを作成してパラメーターを提供します。
CMD ["sh"、 "start.sh"]
2番目の使用法:ENTRYPOINTのパラメーターを指定します。
CMD ["param1"、 "param2"]
3番目の使用法(シェル形式):「/ bin / sh -c」の方法で実行されるコマンド。
CMD ["/ bin / echo"、 "this is a echo test"]
dockerfileに指定できるコマンドは1つだけです。複数ある場合、最後のコマンドのみが有効になります。 -
ENTRYPOINT:コンテナーの開始時に実行されます(実行されます)
- エントリポイントとcmdの違いは、
通常、Dockerコンテナーが開始された後のデフォルトの実行コマンドである角括弧の形のエントリブラケットであり、変更されていない部分が含まれます。コマンドパラメーターなどの可変部分は、cmdの形式を使用してデフォルトバージョンを提供できます。実行中にパラメーターがない場合に使用されるデフォルトのパラメーター。デフォルトのパラメーターを使用する場合は、直接実行します。それ以外の場合は、他のパラメーターを使用するため、実行するパラメーターを追加します。
元のリンク:https://blog.csdn.net/u010900754/article/detaills/78526443
- external_links:docker-compose.ymlで定義されなくなったコンテナーに接続する
- リンク:コンテナー間の接続の問題を解決する
- ports:マッピングされたポートのラベル
ports:
- "8000:8000"
- ボリュームは
、ボリュームドッカーデータがコンテナの終わりで終了されていない場合でも、データの永続性を確保するため、ホストマシン上のデータの存在は-のいずれかのホストの指定したディレクトリに存在する、または使用のドッキングウィンドウは、ボリュームを管理します。
volumes:
#此时docker将自动创建一个匿名的volume,并将其挂载到container中的/mysql目录。
- /var/lib/mysql
#如果文件不存在,则docker会自动创建
- /opt/data:/var/lib/mysql
3.サンプルコード
version: '2'
services:
ssm:
build: .
ports:
- "1935:8000"
image: horn1998/ssm:v2.0
command: sh start.sh
depends_on:
- mysql
volumes:
- /opt/data:/app/data
links:
- mysql
mysql:
image: mysql:latest
ports:
- "3306:3306"
command: service mysql start
4.作成を開始します。
docker-compose up -d