侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

操作

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 119 阅读 / 7,674 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

docker search name
查找名为name的镜像在服务器上
docker pull name
拉取镜像到本地,name为全称。
docker run --name testTomcat -p 8080:8080 -v /usr/test:/usr/local/tomcat/webapps/test -d tomcat
以名字为tomcat的镜像创建一个名为testTomcat的容器并运行
image —run—>container
--name testTomcat 表示上一步安装的镜像名称
-p 8080:8080 表示将容器的8080port映射到本机的8080port端口
-v /usr/test:/usr/local/tomcat/webapps/test 表示将本机下的usr目录下的test文件夹映射到容器tomcat的webapps文件夹下
-d tomcat 表示在后台守护进程的方式启动(不进入后台启动),指定上一步安装的镜像名称
docker exec -it name bash
可以用name也可以用id,id不用打全,能够区分就行。
docker commit 容器名 镜像名
复刻容器生成镜像。
docker build -t 镜像名 .
. 表示当前文件夹,以当前文件夹里的Dockerfile 文件生成一个镜像。
from tomcat
add ./ /usr/local/tomcat/webapps/ROOT/
第一句是表示基于tomcat和这个镜像创建这个镜像
第二句表示把当前文件夹的东西复制到镜像的/usr/local/tomcat/webapps/ROOT/
创建tomcat的Dockerfile文件
FROM openjdk:8-jre

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME

let "Tomcat Native" live somewhere isolated

ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR

runtime dependencies for Tomcat Native Libraries

Tomcat Native 1.2+ requires a newer version of OpenSSL than debian:jessie has available

> checking OpenSSL library version >= 1.0.2...

> configure: error: Your version of OpenSSL is not compatible with this version of tcnative

see http://tomcat.10.x6.nabble.com/VOTE-Release-Apache-Tomcat-8-0-32-tp5046007p5046024.html (and following discussion)

and https://github.com/docker-library/tomcat/pull/31

ENV OPENSSL_VERSION 1.1.0f-3+deb9u2
RUN set -ex;
currentVersion="$(dpkg-query --show --showformat '$\n' openssl)";
if dpkg --compare-versions "$currentVersion" '<<' "$OPENSSL_VERSION"; then
if ! grep -q stretch /etc/apt/sources.list; then \

only add stretch if we're not already building from within stretch

        { \
            echo 'deb http://deb.debian.org/debian stretch main'; \
            echo 'deb http://security.debian.org stretch/updates main'; \
            echo 'deb http://deb.debian.org/debian stretch-updates main'; \
        } &gt; /etc/apt/sources.list.d/stretch.list; \
        { \

add a negative "Pin-Priority" so that we never ever get packages from stretch unless we explicitly request them

            echo 'Package: *'; \
            echo 'Pin: release n=stretch*'; \
            echo 'Pin-Priority: -10'; \
            echo; \

... except OpenSSL, which is the reason we're here

            echo 'Package: openssl libssl*'; \
            echo &quot;Pin: version $OPENSSL_VERSION&quot;; \
            echo 'Pin-Priority: 990'; \
        } &gt; /etc/apt/preferences.d/stretch-openssl; \
    fi; \
    apt-get update; \
    apt-get install -y --no-install-recommends openssl=&quot;$OPENSSL_VERSION&quot;; \
    rm -rf /var/lib/apt/lists/*; \
fi

RUN apt-get update && apt-get install -y --no-install-recommends
libapr1
&& rm -rf /var/lib/apt/lists/*

see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS

see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)

ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23

ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.5.32
ENV TOMCAT_SHA512 fc010f4643cb9996cad3812594190564d0a30be717f659110211414faf8063c61fad1f18134154084ad3ddfbbbdb352fa6686a28fbb6402d3207d4e0a88fa9ce

ENV TOMCAT_TGZ_URLS \

https://issues.apache.org/jira/browse/INFRA-8753?focusedCommentId=14735394#comment-14735394

https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz \

if the version is outdated, we might have to pull from the dist/archive :/

https://www-us.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz \
https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz \
https://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz

ENV TOMCAT_ASC_URLS
https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \

not all the mirrors actually carry the .asc files :'(

https://www-us.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \
https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc \
https://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc

RUN set -eux;

savedAptMark="$(apt-mark showmanual)";
apt-get update;

apt-get install -y --no-install-recommends gnupg dirmngr;

export GNUPGHOME="$(mktemp -d)";
for key in $GPG_KEYS; do
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key";
done;

apt-get install -y --no-install-recommends wget ca-certificates;

success=;
for url in $TOMCAT_TGZ_URLS; do
if wget -O tomcat.tar.gz "$url"; then
success=1;
break;
fi;
done;
[ -n "$success" ];

echo "$TOMCAT_SHA512 tomcat.tar.gz" | sha512sum -c -;

success=;
for url in $TOMCAT_ASC_URLS; do
if wget -O tomcat.tar.gz.asc "$url"; then
success=1;
break;
fi;
done;
[ -n "$success" ];

gpg --batch --verify tomcat.tar.gz.asc tomcat.tar.gz;
tar -xvf tomcat.tar.gz --strip-components=1;
rm bin/
.bat;
rm tomcat.tar.gz*;
rm -rf "$GNUPGHOME";

nativeBuildDir="$(mktemp -d)";
tar -xvf bin/tomcat-native.tar.gz -C "$nativeBuildDir" --strip-components=1;
apt-get install -y --no-install-recommends
dpkg-dev
gcc
libapr1-dev
libssl-dev
make
"openjdk-${JAVA_VERSION%%[.~bu-]*}-jdk=$JAVA_DEBIAN_VERSION"
;
(
export CATALINA_HOME="$PWD";
cd "$nativeBuildDir/native";
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)";
./configure
--build="$gnuArch"
--libdir="$TOMCAT_NATIVE_LIBDIR"
--prefix="$CATALINA_HOME"
--with-apr="$(which apr-1-config)"
--with-java-home="$(docker-java-home)"
--with-ssl=yes;
make -j "$(nproc)";
make install;
);
rm -rf "$nativeBuildDir";
rm bin/tomcat-native.tar.gz;
\

reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies

apt-mark auto '.*' &gt; /dev/null; \
[ -z &quot;$savedAptMark&quot; ] || apt-mark manual $savedAptMark; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
rm -rf /var/lib/apt/lists/*; \
\

sh removes env vars it doesn't support (ones with periods)

https://github.com/docker-library/tomcat/issues/77

find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +

verify Tomcat Native is working properly

RUN set -e
&& nativeLines="$(catalina.sh configtest 2>&1)"
&& nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')"
&& nativeLines="$(echo "$nativeLines" | sort -u)"
&& if ! echo "$nativeLines" | grep 'INFO: Loaded APR based Apache Tomcat Native library' >&2; then
echo >&2 "$nativeLines";
exit 1;
fi

EXPOSE 8080
CMD ["catalina.sh", "run"]


docker ps -a : 查看已经在运行的所有容器
docker port 容器ID : 查看容器的内外端口映射
docker logs 容器ID : 查看容器的日志
docker stop 容器ID : 关闭容器(未删除)
docker start 容器ID : 开启容器
docker rm 容器ID : 删除对应的容器(注:删除之前必须要stop,否则删不掉的)
docker images : 查看机器上所有的镜像
docker rmi 镜像ID : 删除对应的镜像(注:删除之前必须停止或删除它创建的所有容器)
docker save -o 自定义名.tar 镜像名
镜像ID -o 文件 : 将指定的镜像打包(例:docker save ef6a7c98d192 -o /home/wuyongfei/springboot-demo.tar)
docker load -i 自定.jar
镜像名字还是被保存的镜像的名字。 实现了Docker镜像的移植


tomcat 初始化实例在linux里放在/usr/local/tomcat/webapps/ROOT

docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat

0

评论区