docker環境構築およびdockerfile作成
11872 ワード
docker環境構築およびdockerfile作成
docker構築前の準備
まずdockerのドキュメントを見て、dockerミラー、コンテナ、倉庫の基本的な概念を理解することをお勧めします.転載を参照:https://yeasy.gitbooks.io/docker_practice/content/introduction/what.html
1 dockerインストール
私がdockerを取り付けた機械はcentos 7です.6の仮想マシンですので、yumを使用してdockerをインストールします.また、権限が足りない場合は、sudoを追加してコマンドの前にコマンドを実行してください.
1.1 yumコマンドを使用して古いバージョンをアンインストールする
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
1.2 yumソースをアリクラウドに更新
ネットワークの問題で、海外にアクセスするyumソースのネットワーク速度が理想的ではないため、まず国内yumソースに更新します.
# wget
yum -y install wget
# aliyun yum ,
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# mirrors.cloud.aliyuncs.com ( )
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
# yum
yum makecache
yum -y update
1.3 dockerのインストール
#
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# docker-ce
yum makecache fast # ,
yum install docker-ce
1.4 dockerの有効化
# docker
systemctl enable docker
systemctl start docker
# doucker , docker
groupadd docker
usermod -aG docker $USER
Dockerが正しくインストールされているかどうかをテストします
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
以上の情報を正常に出力できれば、インストールに成功したことを示します.
1.5 dockerミラー加速
私が選んだのはアリ雲のミラー加速です
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://cnr3t036.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
2 dockerfile作成
dockerfileを作成する前に、どのミラーに基づいて完璧なミラーを豊富にしているかを確認する必要があります.一般的には、空のミラー、centos、ubuntuなどを選択することができます.ここで私が選んだのはcentosです.
2.1ミラーのプル
コマンドとパラメータ:docker pull[オプション][Docker Registryアドレス[:ポート番号]/]倉庫名[:ラベル].ミラーアクセラレータを構成し、ミラーウェアハウスに既存のミラーを使用するため、アドレスポートに転送することなく、ミラーを直接引き出すことができます.pullの前に、searchコマンドでミラーが存在するかどうかを検索することもできます.
#
docker search centos
#
docker pull centos:latest
#
docker images #
docker images centos #
#
docker image rm centos
#
docker rmi centos
2.2 dockerfile作成
centosミラーを引いた後、jdk、tomcat、nginxをインストールし、実際のマシンをマウントするディレクトリ(出力ログ、htmlの保存、warパッケージなど)を設定し、ポートマッピングを設定するなど、具体的なスクリプトを書かずにデバッグプロセスを作成します.以下を参照してください.https://yeasy.gitbooks.io/docker_practice/content/image/build.html自分で完成したdockerfileを差し上げます.
#
FROM centos:latest
#
MAINTAINER crazy_moore
#
ENV JAVA_HOME /usr/lib/jvm/java
ENV CATALINA_HOME /usr/local/soft/tomcat/apache-tomcat-9.0.24
ENV PATH /usr/local/nginx/sbin:$PATH:$CATALINA_HOME/bin:$JAVA_HOME/bin
# run
# yum
RUN yum -y install wget \
&& wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \
&& yum makecache \
&& yum -y update \
#
&& mkdir -p /docker_init_tmp/ \
&& cd /docker_init_tmp/ \
# jdk/nginx/tomcat
&& wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.24/bin/apache-tomcat-9.0.24.tar.gz \
&& wget http://nginx.org/download/nginx-1.17.3.tar.gz \
# JDK
&& yum -y install java-1.8.0-openjdk-devel \
# tomcat
&& mkdir -p /usr/local/soft/tomcat \
&& tar xzf /docker_init_tmp/apache-tomcat-9.0.24.tar.gz -C /usr/local/soft/tomcat \
# nginx
&& mkdir -p /usr/local/soft/nginx \
&& tar xzf /docker_init_tmp/nginx-1.17.3.tar.gz -C /usr/local/soft/nginx \
&& yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel \
&& yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel \
&& useradd -M -s /sbin/nologin nginx \
&& cd /usr/local/soft/nginx/nginx-1.17.3/ \
&& ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module \
&& make \
&& make install \
#
&& echo "Asia/Shanghai" > /etc/timezone \
#
&& rm -rf /docker_init_tmp
#
EXPOSE 80
EXPOSE 8085
# , ( ) 。
WORKDIR /app/scripts/
CMD ["./start.sh"]
2.3ミラーのコンパイル
コンパイルコマンド
docker build -t kuoxu_centos:0.0.1 .
コンパイルに問題がある場合は、ヒントに基づいてスクリプトに存在する問題を解決できます.また、コンパイルに失敗したり、不要なミラー、コンテナのクリーンアップコマンドは次のとおりです.
#
docker images
#
docker container ls
#
docker container prune
#
docker container rm [ | id]
#
docker rmi [ id| ]
docker image rm [ id| ]
2.4注意点
2.5起動スクリプトと起動コンテナ
起動する前に、実際のマシン上の対応ディレクトリを確立し、後続のプロファイル、起動スクリプトを対応ディレクトリに保存すればいいです.
mkdir -p /logs/nginx /logs/tomcat /web/tomcat /web/html /web/resources /app/scripts
起動スクリプト:
#!/bin/sh
#
rm /usr/local/soft/tomcat/apache-tomcat-9.0.24/conf/server.xml
cp -r /app/scripts/server.xml /usr/local/soft/tomcat/apache-tomcat-9.0.24/conf/
cp -r /app/scripts/nginx.conf /usr/local/nginx/conf/
# tomcat
/usr/local/soft/tomcat/apache-tomcat-9.0.24/bin/startup.sh
# nginx
nginx -g "daemon off;"
起動スクリプトの内容はこれらです.中のnginxです.confとtomcatのserver.xmlはみんな自分のものでいいです.
コンテナの起動:
docker run -itd --name kuoxu_centos1 -p 8080:8085 \
-p 80:80 \
-v /logs/nginx:/var/log/nginx \
-v /logs/tomcat:/usr/local/soft/tomcat/apache-tomcat-9.0.24/logs \
-v /web/html:/web/html \
-v /web/tomcat:/web/tomcat \
-v /web/resources:/web/resources \
-v /app/scripts:/app/scripts \
kuoxu_centos:0.0.1
コンテナが起動すると、docker container lsで起動状態を表示できます.対応するデータがない場合は、コンテナの起動に失敗したか、コンテナの起動が実行された後に自動的に停止したことを示します(デーモンスレッド).次のコマンドでログを表示できます.エラーログがない場合は、コンテナの起動後に自動的に停止する可能性があります.
docker logs -f -t --tail=100 kuoxu_centos1
エラーログがある場合は、プロンプトに従って問題を解決します(runパラメータの修正、起動スクリプトの調整、dockerfileなど).問題がdockerfileスクリプトで発生した場合は、再buildが必要です.
2.6容器に入る
# bash , id
docker exec -it kuoxu_centos1 bash
# , ,
#[root@d01b40d8abd4 scripts]
#
exit
後記
ここまで、dockerの環境構築とdockerfileの作成は基本的に完了しました.問題があれば、伝言を歓迎します.