docker–dockerfileによるパッケージングミラー

11082 ワード

docker–dockerfileによるパッケージミラー転載:菜鳥ブログ


https://birdteam.net/132835


近年、ますます広く使われています.まずdockerの主な3つの概念名詞、倉庫(repository)、容器(container)、ミラー(image)を簡単に知っておきます.概念は公式のドキュメントを見てください.字(私)数(非)は(常に)求めなければならないので、ここでは詳しく説明しません.
簡単に言えば、dockerhubからpullがミラーリングされ、ミラーリングに頼って容器を作ります.
上図:
この大きな図は、容器(container)がミラー層でパッケージされていることを示しています.
 
OK!簡単な概念的なものは具体的に説明しないで、今このような爆発的な技術、いろいろな分を分けて入門する文章があちこちに見られます.私は同質化したくなくて、直接乾物に行って、どのようにDockerfileを利用して自分のCentos 7ベースのnginxミラーを作成します.
ここでは、容器がミラー層で梱包されている以上、ミラー層が少ないほどミラーが小さくなるので、Dockerfileを書くときは必ず金のように惜しんでください!!惜字如金!!
 
作業ディレクトリの作成(ここでは、必要なインストールパッケージがすべてこのディレクトリに含まれていることに注意してください)
   
   
   
   
  1. #mkdir /root/centos_nginx
  2. #cd /root/centos_nginx

nginxのtarパッケージをダウンロード
   
   
   
   
  1. #wget http://nginx.org/download/nginx-1.14.0.tar.gz

Dockfileの作成を開始する準備が整いました:
   
   
   
   
  1. #vim Dockerfile
   
   
   
   
  1. FROM centos:latest
  2. # centos
  3. LABEL maintainer="Ace [email protected]"
  4. #
  5. WORKDIR /usr/local/src/
  6. #
  7. ADD nginx-1.14.0.tar.gz ./
  8. # ,ADD
  9. WORKDIR nginx-1.14.0/
  10. #
  11. RUN yum install -y gcc gcc-c++ && \
  12. # shell
  13. yum install -y pcre pcre-devel && \
  14. yum install -y zlib zlib-devel && \
  15. yum install -y openssl openssl-devel libssl-dev && \
  16. ./configure --prefix=/usr/local/nginx && \
  17. make && make install
  18. EXPOSE 80
  19. # 80

準備ができました.ミラーの作成を開始します.
   
   
   
   
  1. #docker build –t my_nginx:v1-1 ./
  2. # dockerfile , my_nginx:v1-1

ミラーのパッケージングが完了したかどうかを確認
   
   
   
   
  1. # docker image ls
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. my_nginx v1-1 d1bcadfaa3cc 2 hours ago 369MB
  4. centos latest 1e1148e4cc2c 7 weeks ago 202MB

ミラーの準備ができました.コンテナの作成を開始します.
   
   
   
   
  1. # docker run --name Ace_nginx1 -d -it -p 8080:80 my_nginx:v1-1
  2. --name -d i t tty p docker80 8080

現在存在するコンテナの表示
   
   
   
   
  1. # docker container ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. a528460856c4 my_nginx:v1-1 "/bin/bash" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp Ace_nginx1

作成したばかりのコンテナが表示され、コンテナに入ります
   
   
   
   
  1. # docker exec -it a528460856c4 /bin/bash
  2. ID ID

容器内でnginxを起動し確認する
   
   
   
   
  1. # /usr/local/nginx/sbin/nginx
  2. # ps -ef | grep nginx
  3. root 32 0 0 17:04 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
  4. nobody 33 32 0 17:04 ? 00:00:00 nginx: worker process

これでcentosベースのnginxコンテナの起動が完了しました.テストしましょう.
   
   
   
   
  1. # curl http://localhost:80
  2. nginx

最後にブラウザでホストの8080ポートにアクセスすると、nginxウェルカムインタフェースも見えます!
大成功!