Centos7.9.2009 安装最新Docker、Docker-Compose、私有仓库并使用dockerfile构建镜像

news/2024/11/9 1:54:08/

卸载删除干净

$ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

设置

 $ sudo yum install -y yum-utils$ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

安装

$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

验证

$ sudo systemctl start docker
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:13e367d31ae85359f42d637adf6da428f76d75dc9afeb3c21faea0d976f5c651
Status: Downloaded newer image for hello-world:latestHello 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 theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare 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/

设置私有仓库

$ sudo docker pull registry
$ sudo docker run -id --name=registry -p 5000:5000 registry

配置insecure-registries

在/etc/docker/目录下配置daemon.json(如果文件不存在创建存在修改)

{"registry-mirrors": ["https://mirror.ccs.tencentyun.com","https://kuamavit.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"],"insecure-registries": ["127.0.0.1:5000"]
}

push 默认是https模式的,配置127.0.0.1:5000则 docker push 镜像到这个地址的仓库采用http模式 。

重启

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service

推送私有仓库

$ sudo docker pull redis
$ sudo docker tag redis:latest 127.0.0.1:5000/registry/redis:latest
$ sudo docker push 127.0.0.1:5000/registry/redis

curl命令验证一下

$ sudo curl http://127.0.0.1:5000/v2/_catalog

{“repositories”:[“registry/redis”]}

安装docker-compose

 $ sudo yum -y install epel-release$ sudo yum update$ sudo yum install docker-compose
$ sudo docker-compose --version  
docker-compose version 1.18.0, build 8dd22a9

构建镜像

  • 创建docker-compose文件执行(docker-compose 支持 docker-compose.yaml和docker-compose.yml)

$ sudo docker-compose up

  • 创建Dockerfile文件使用docker build, 如构建tomcat
FROM openjdk:8-jreENV 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 '${Version}\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'; \} > /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 themecho 'Package: *'; \echo 'Pin: release n=stretch*'; \echo 'Pin-Priority: -10'; \echo; \
# ... except OpenSSL, which is the reason we're hereecho 'Package: openssl libssl*'; \echo "Pin: version $OPENSSL_VERSION"; \echo 'Pin-Priority: 990'; \} > /etc/apt/preferences.d/stretch-openssl; \fi; \apt-get update; \apt-get install -y --no-install-recommends openssl="$OPENSSL_VERSION"; \rm -rf /var/lib/apt/lists/*; \fiRUN 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 F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.5.32
ENV TOMCAT_SHA512 fc010f4643cb9996cad3812594190564d0a30be717f659110211414faf8063c61fad1f18134154084ad3ddfbbbdb352fa6686a28fbb6402d3207d4e0a88fa9ceENV TOMCAT_TGZ_URLS \
# https://issues.apache.org/jira/browse/INFRA-8753?focusedCommentId=14735394#comment-14735394https://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.gzENV 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.ascRUN 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 dependenciesapt-mark auto '.*' > /dev/null; \[ -z "$savedAptMark" ] || 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/77find ./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; \fiEXPOSE 8080
CMD ["catalina.sh", "run"]

$ sudo docker build -t tomcat .


http://www.ppmy.cn/news/427629.html

相关文章

【今日CV 计算机视觉论文速览 第129期】Wed, 12 Jun 2019

今日CS.CV 计算机视觉论文速览 Wed, 12 Jun 2019 Totally 52 papers ?上期速览✈更多精彩请移步主页 Interesting: ?Shapes and Context, 研究人员提出了一种从语义标签图合成图像以及操作图像内容的方法&#xff0c;具有丰富的适应性、可以合成十分高分辨的图像&#xff0c…

图形世界分裂的两派——理清D3D和OpenGL的脉络

转载自&#xff1a;http://www.iieeg.com/newscon.php?id8388 计算机三维图形是指将用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术&#xff0c;API(Application Programming Interface)即“应用程序接口”是连接应用程序与操作系统、实现对计算机硬件控制…

【模渲大师后期】——渲染带PS功能(模渲大师

渲染带PS功能(模渲大师 众所周知、改图是几乎被所有人默认的设计行业的普遍现象&#xff0c;就好像不该图的方案就不是好方案。而改图也有再收费和免费以及各种改图的规矩&#xff08;先不谈这个&#xff09;。那么作图、改图如果可以很快&#xff0c;那是不是可以更好提高自己…

【模渲大师预设】——W10系统关闭安全卫士教程和属性快速设置

——W10系统关闭安全卫士教程和属性快速设置 众所周知、改图是几乎被所有人默认的设计行业的普遍现象&#xff0c;就好像不该图的方案就不是好方案。而改图也有再收费和免费以及各种改图的规矩&#xff08;先不谈这个&#xff09;。那么作图、改图如果可以很快&#xff0c;那是…

【模渲大师菜单功能】——13渲染文件

模渲大师菜单功能之渲染-13渲染文件 众所周知、改图是几乎被所有人默认的设计行业的普遍现象&#xff0c;就好像不改图的方案就不是好方案。而改图也有再收费和免费以及各种改图的规矩&#xff08;先不谈这个&#xff09;。那么作图、改图如果可以很快&#xff0c;那是不是可以…

【模渲大师菜单功能】——09快速相机功能

【模渲大师菜单功能】——09快速相机功能 众所周知、改图是几乎被所有人默认的设计行业的普遍现象&#xff0c;就好像不该图的方案就不是好方案。而改图也有再收费和免费以及各种改图的规矩&#xff08;先不谈这个&#xff09;。那么作图、改图如果可以很快&#xff0c;那是不是…

Java后台日常学习环境搭建

文章目录 1. mplayer2. anaconda opencv tensorflow3. Java IntelliJUbuntuJavaIntelliJ**IntelliJ 配置** Mac安装环境配置 4. 用git上传文件到GithubUbuntuMac安装git创建ssh key、配置git 5. Hadoop安装Ubuntu[5.1 Java安装](#3. linux Java IntelliJ)5.2 ssh免密登陆5.…

CoppeliaSim用户手册中文翻译版(二)

CoppeliaSim 用户手册 文章目录 5. 计算模块5.1 计算模块属性对话框5.2 碰撞检测5.3 距离计算5.4 逆运动学5.4.1 IK组和IK元素的基础知识5.4.2 解决IK和FK的任何类型的机制 5.5 逆运动对话框5.5.1 IK元素对话框 5.6 动力学5.6.1 设计动态仿真5.6.2 一般动力学特性5.6.2.1 动态引…