2020年 · Docker · Linux

制作一个tomcat8+JDK1.8之docker镜像

需要的安装包:apache-tomcat-8.5.51.tar.gz   jdk-8u241-linux-x64.tar.gz
解压后  mv apache-tomcat-8.5.51  tomcat8

本镜像是基于lbelmarletelier/debian9:latest 镜像制作

root@prv:~/tomcat8.5.51_dockerfile# cat Dockerfile
FROM lbelmarletelier/debian9:latest

RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
echo “deb http://mirrors.163.com/debian/ stretch main non-free contrib” > /etc/apt/sources.list && \
echo “deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib” >> /etc/apt/sources.list && \
echo “deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib” >> /etc/apt/sources.list && \
echo “deb-src http://mirrors.163.com/debian/ stretch main non-free contrib” >> /etc/apt/sources.list && \
echo “deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib” >> /etc/apt/sources.list && \
echo “deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib” >> /etc/apt/sources.list && \
echo “deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib” >> /etc/apt/sources.list && \
echo “deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib” >> /etc/apt/sources.list

RUN apt-get update && apt-get -y install net-tools libapr1-dev libssl-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/*

ADD jdk1.8.0_241 /usr/local/jdk1.8.0_241
ADD tomcat8 /usr/local/tomcat8

RUN cd /usr/local/tomcat8/bin/ && tar zxf tomcat-native.tar.gz   && cd  tomcat-native-*-src/native && \
./configure –with-apr=/usr/bin/apr-1-config –with-java-home=/usr/local/jdk1.8.0_241 –with-ssl=yes –prefix=/usr/local/tomcat8 && \
make && make install

RUN groupadd -g 1000 webuser && useradd -u 1000 -g webuser webuser && \
chown webuser:webuser -R /usr/local/tomcat8

ENV JAVA_HOME /usr/local/jdk1.8.0_241
ENV JRE_HOME /usr/local/jdk1.8.0_241/jre
ENV CATALINA_HOME /usr/local/tomcat8
#ENV TOMCAT_NATIVE_LIBDIR /usr/local/tomcat/native-jni-lib
#ENV LD_LIBRARY_PATH /usr/local/tomcat/native-jni-lib
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $CATALINA_HOME/bin:$JAVA_HOME/bin:$PATH

EXPOSE 8080

WORKDIR /usr/local/tomcat8

CMD [“catalina.sh”, “run”]

root@prv:~/tomcat8.5.51_dockerfile# docker build -t tomcat8.5.51 .    #开始创建镜像
root@prvbru:~/tomcat8.5.51_dockerfile# docker images
REPOSITORY TAG            IMAGE         ID                CREATED    SIZE
tomcat8.5.51                        latest     b5fc3610c5eb   3 days   ago   927MB
lbelmarletelier/debian9    latest     93ced94438c7   5 months   ago   455MB

2019年 · Docker

Ubuntu 16.04安装docker

一、准备工作

1、打开官网(https://www.docker.com/),发现有社区版与企业版,我们选择安装社区版本(CE)官方文档(https://docs.docker.com/)。

2、准备一个ubuntu系统环境
root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial

二、安装部署

1、由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:

#apt-get remove docker docker-engine docker.io

2、安装docker环境:

2.1 更新APT源
#apt-get update

2.2 安装以下包以使apt可以通过HTTPS使用存储库(repository):
#apt-get install   apt-transport-https   ca-certificates   curl   software-properties-common

2.3 添加Docker官方的GPG密钥:
#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

2.4 使用下面的命令来设置stable存储库:
# add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”

2.5 再更新一下apt包索引:
# apt-get update

2.6 安装docker-ce( 可指定版本 )
//列出可用版本
# apt-cache madison docker-ce
//安装最新版本的Docker CE:
# apt-get install docker-ce
//或 指定安装版本
# apt-get install docker-ce 版本号

三、验证docker

查看docker服务是否启动:
# systemctl status docker

若未启动,则启动docker服务:
# systemctl start docker

Docker · 点滴记录

docker常用命令

docker kill $(docker ps -a -q)               #杀死所有正在运行的容器
docker rm $(docker ps -a -q)                #删除所有已经停止的容器
docker rmi $(docker images -q -f dangling=true)               #删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q)             #删除所有镜像

用户模式下创建别名~/.bash_aliases
alias dockerkill=’docker kill $(docker ps -a -q)’                  #杀死所有正在运行的容器.
alias dockercleanc=’docker rm $(docker ps -a -q)’             #删除所有已经停止的容器.
alias dockercleani=’docker rmi $(docker images -q -f dangling=true)’           #删除所有未打标签的镜像.
alias dockerclean=’dockercleanc || true && dockercleani’                 #删除所有已经停止的容器和未打标签的镜像.

docker常用命令
docker version                                 #查看版本
docker search tutorial                    #搜索可用docker镜像
docker pull learn/tutorial              #下载镜像
docker run learn/tutorial echo “hello word”                    #在docker容器中运行hello world!
docker run learn/tutorial apt-get install -y ping              #在容器中安装新的程序

保存镜像
首先使用docker ps -l命令获得安装完程序之后容器的id。然后把这个镜像保存为一个镜像名。
操作步骤:
1.运行docker commit,可以查看该命令的参数列表。
2.你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)
3.无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。
容器转存为镜像命令:
docker commit 698 learn/nginx
运行新的镜像:
docker run learn/nginx ping www.baidu.com
检查运行中的镜像
现在你已经运行了一个docker容器,让我们来看下正在运行的容器。
使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。
目标:查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。
提示:可以使用镜像id的前面部分,不需要完整的id。
命令:docker inspect efe

查看容器日志
docker logs <id/container_name>                   #查看容器日志
docker logs -f <id/container_name> (类似 tail -f) (带上时间戳-t)     #实时查看日志输出

查看容器
$docker ps                          #列出当前所有正在运行的container
$docker ps | less -S           #用一行列出所有正在运行的container(容器多的时候非常清晰)
$docker ps -a              #列出所有的container
$docker ps -l              #列出最近一次启动的container
$docker top Name/ID                                      #显示一个运行的容器里面的进程信息
$docker inspect <id/container_name>       #查看容器内部详情细节

停止、启动、杀死、重启一个容器
$docker stop Name/ID
$docker start Name/ID
$docker kill Name/ID
$docker restart name/ID
$docker rm Name/ID       #删除单个容器
$sudo docker images        #列出镜像
$docker search image_name     #从dockerhub检索image
$docker pull image_name          #下载image,拉取docker镜像
$docker rmi image_name          #删除一个或者多个镜像;
$docker history image_name     #显示一个镜像的历史;
$docker push new_image_name         #发布docker镜像
$ip a show docker0                      #查看docker0的网络(宿主机上操作)
$docker inspect -f ‘{{ .NetworkSettings.IPAddress }}’ <id、container_name>       #查看容器的IP地址
$docker version            #查看docker版本
$docker info                  #查看docker系统的信息

# docker –help   #多看帮助