# Docker

# Flag

Docker搭建私有仓库

# 其他容器技术

运行时

# 仓库镜像

以下镜像地址需要直接配置在docker中,不能通过浏览器访问

# Docker命令

# 退出docker容器
# 如果容器内部没有任何程序运行, 一旦执行exit, 退出容器时, 容器将结束运行
exit

# 查看运行中的容器
docker ps
# 查看全部的容器, 包括运行中和已停止运行的容器
docker ps -a

# 通过容器名称删除已经停止运行的容器(test-centos为docker run命令中给容器的命名)
docker rm test-centos
# 通过容器ID删除已经停止运行的容器,与上面的命令效果一样, 060e是containerID的前4位
docker rm 060e
# 强制删除状态为Up, 正在运行中的容器
docker rm -f test-centos

# Docker compose

Compose 文件是一个 YAML , 主要定义了 services,networksvolumes,其默认路径是 ./docker-compose.yml

service 定义包含了应用与每个容器的配置,很像给 docker run 传参,同样, networkvolume 对于 docker network createdocker volume create 也类似。

像在 Dockerfile (eg: CMD , EXPOSE , VOLUME , ENV)可以使用的选项也可以在 docker run参数中使用, 这样在 docker-compose.yml 里就不需要再次指定了。

docker-compose.yml 里可以使用环境变量,类似 Bash 格式 ${VARIABLE}

  • composer 文件格式有两种版本:
    • version 1: 已经废弃, 不支持volumesnetworks,默认 version key 是省略的。
    • version 2: 推荐的格式,目前是最新的,需要通过 version '2' 指定。

ports

暴露端口。既可以是 HOST:CONTAINER ,也可以只用容器端口(host端口会随机选取)。 当以 HOST:CONTAINER 的形式映射端口的时候,当容器的端口低于60的时候可能会遇到错误, 因为YAML会解析 xx:yy 数字为60。 基于这个原因,我们推荐明确指定端口映射用字符串的形式。

volumes

挂载指定的路径或者named volumes, 可以在主机上指定一个路径 HOST:CONTAINER ,或者一个可访问的 HOST:CONTAINER:ro 。

# Dockerfile

  • 创建Dockerfile文件
vi Dockerfile
  • 添加内容
# 使用的基础镜像
FROM centos:7
# 作者信息
MAINTAINER bajins "claer@bajins.com"

# 创建目录
RUN mkdir -p /data/java/jdk1.7.0_80
# 把当前目录下的jdk文件夹添加到镜像
ADD jdk1.7.0_80 /data/java/jdk1.7.0_80

# 创建tomcat目录
RUN mkdir -p /data/java/tomcat-8080
# 把当前目录下的tomcat文件夹添加到镜像
ADD tomcat-8080 /data/java/tomcat-8080

# 添加环境变量
ENV JAVA_HOME /data/java/jdk1.7.0_80
ENV CATALINA_HOME /data/java/tomcat-8080
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

# 暴露容器端口
EXPOSE 8080
EXPOSE 8090

# 启动时运行tomcat
CMD ["/data/java/tomcat-8080/bin/catalina.sh","run"]
FROM centos:7

#安装wget工具
RUN yum -y install wget

#下载并且安装jdk设置环境变量
COPY jdk-8u201-linux-x64.rpm jdk-8u201-linux-x64.rpm
RUN rpm -ivh jdk-8u201-linux-x64.rpm
ENV JAVA_HOME /usr/java/latest/
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
RUN rm -rf jdk-8u201-linux-x64.rpm

#时区中文等处理
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo 'Asia/Shanghai' >/etc/timezone
RUN yum -y install kde-l10n-Chinese

#配置显示中文
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL zh_CN.utf8
RUN echo "export LC_ALL=zh_CN.utf8" >> /etc/profile