docker–dockerfileによるパッケージングミラー
11082 ワード
docker–dockerfileによるパッケージミラー転載:菜鳥ブログ
https://birdteam.net/132835
近年、ますます広く使われています.まずdockerの主な3つの概念名詞、倉庫(repository)、容器(container)、ミラー(image)を簡単に知っておきます.概念は公式のドキュメントを見てください.字(私)数(非)は(常に)求めなければならないので、ここでは詳しく説明しません.
簡単に言えば、dockerhubからpullがミラーリングされ、ミラーリングに頼って容器を作ります.
上図:
この大きな図は、容器(container)がミラー層でパッケージされていることを示しています.
OK!簡単な概念的なものは具体的に説明しないで、今このような爆発的な技術、いろいろな分を分けて入門する文章があちこちに見られます.私は同質化したくなくて、直接乾物に行って、どのようにDockerfileを利用して自分のCentos 7ベースのnginxミラーを作成します.
ここでは、容器がミラー層で梱包されている以上、ミラー層が少ないほどミラーが小さくなるので、Dockerfileを書くときは必ず金のように惜しんでください!!惜字如金!!
作業ディレクトリの作成(ここでは、必要なインストールパッケージがすべてこのディレクトリに含まれていることに注意してください)
- #mkdir /root/centos_nginx
- #cd /root/centos_nginx
nginxのtarパッケージをダウンロード
- #wget http://nginx.org/download/nginx-1.14.0.tar.gz
Dockfileの作成を開始する準備が整いました:
- #vim Dockerfile
- FROM centos:latest
- # centos
- LABEL maintainer="Ace [email protected]"
- #
- WORKDIR /usr/local/src/
- #
- ADD nginx-1.14.0.tar.gz ./
- # ,ADD
- WORKDIR nginx-1.14.0/
- #
- RUN yum install -y gcc gcc-c++ && \
- # shell
- yum install -y pcre pcre-devel && \
- yum install -y zlib zlib-devel && \
- yum install -y openssl openssl-devel libssl-dev && \
- ./configure --prefix=/usr/local/nginx && \
- make && make install
- EXPOSE 80
- # 80
準備ができました.ミラーの作成を開始します.
- #docker build –t my_nginx:v1-1 ./
- # dockerfile , my_nginx:v1-1
ミラーのパッケージングが完了したかどうかを確認
- # docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- my_nginx v1-1 d1bcadfaa3cc 2 hours ago 369MB
- centos latest 1e1148e4cc2c 7 weeks ago 202MB
ミラーの準備ができました.コンテナの作成を開始します.
- # docker run --name Ace_nginx1 -d -it -p 8080:80 my_nginx:v1-1
- --name -d –i –t tty –p docker80 8080 ,
現在存在するコンテナの表示
- # docker container ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- a528460856c4 my_nginx:v1-1 "/bin/bash" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp Ace_nginx1
作成したばかりのコンテナが表示され、コンテナに入ります
- # docker exec -it a528460856c4 /bin/bash
- :ID ID
容器内でnginxを起動し確認する
- # /usr/local/nginx/sbin/nginx
- # ps -ef | grep nginx
- root 32 0 0 17:04 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
- nobody 33 32 0 17:04 ? 00:00:00 nginx: worker process
これでcentosベースのnginxコンテナの起動が完了しました.テストしましょう.
- :
- # curl http://localhost:80
- nginx
最後にブラウザでホストの8080ポートにアクセスすると、nginxウェルカムインタフェースも見えます!
大成功!
- #mkdir /root/centos_nginx
- #cd /root/centos_nginx
- #wget http://nginx.org/download/nginx-1.14.0.tar.gz
- #vim Dockerfile
- FROM centos:latest
- # centos
- LABEL maintainer="Ace [email protected]"
- #
- WORKDIR /usr/local/src/
- #
- ADD nginx-1.14.0.tar.gz ./
- # ,ADD
- WORKDIR nginx-1.14.0/
- #
- RUN yum install -y gcc gcc-c++ && \
- # shell
- yum install -y pcre pcre-devel && \
- yum install -y zlib zlib-devel && \
- yum install -y openssl openssl-devel libssl-dev && \
- ./configure --prefix=/usr/local/nginx && \
- make && make install
- EXPOSE 80
- # 80
- #docker build –t my_nginx:v1-1 ./
- # dockerfile , my_nginx:v1-1
- # docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- my_nginx v1-1 d1bcadfaa3cc 2 hours ago 369MB
- centos latest 1e1148e4cc2c 7 weeks ago 202MB
- # docker run --name Ace_nginx1 -d -it -p 8080:80 my_nginx:v1-1
- --name -d –i –t tty –p docker80 8080 ,
- # docker container ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- a528460856c4 my_nginx:v1-1 "/bin/bash" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp Ace_nginx1
- # docker exec -it a528460856c4 /bin/bash
- :ID ID
- # /usr/local/nginx/sbin/nginx
- # ps -ef | grep nginx
- root 32 0 0 17:04 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
- nobody 33 32 0 17:04 ? 00:00:00 nginx: worker process
- :
- # curl http://localhost:80
- nginx