Links

Docker

Docker

  • docker images:查看本地镜像
  • docker search sourceName :搜索镜像
    • docker search --filter "is-official=true" sourceName:过滤官方镜像
    • docker search --filter "is-official=true" node:官方node镜像
    • docker search --filter stars=10 sourceName:星星大于10的指定镜像资源
  • docker pull sourceName :下载指定资源镜像
    • docker pull sourceName:版本号
    • docker pull centos:7 :下载centos7镜像
  • docker tag centos:7 mycentos:first :修改镜像名称(小写)
  • docker rmi sourceName :删除本地镜像
    • docker rmi centos:7 :删除centos7镜像
  • docker run -it sourceName|imageId:tag :启动容器(不加:tag 默认运行本地最新的:latest 没有就远程下载)
    • -i :以交互模式运行容器
    • -t :为容器重新分配一个终端
    • -d :后台运行
  • docker ps :查看运行的容器
    • -a :显示所有(包括已经关闭的)
  • docker stop ContainerId:停止后台运行的容器
  • docker run -itd --name=testcentos centos:7 :指定运行容器的name,方便停止
    • docker stop testcentos: 用name停止
    • docker start testcentos: 启动
    • docker restart testcentos: 重启
    • dokcer rm testcentos :删除容器(必须停止的容器)
      • -f :强制删除
    • docker inspect testcentos: 查看容器的详细信息
  • docker exec -it mycentos /bin/bash:进入后台运行的centos容器
  • docker stop $(docker ps -q):停止所有的运行中的容器
    • docker ps -q:查询所有运行中容器的id
    • docker ps -aq:所有容器的id
  • docker start ${docker ps -a -q}:运行所有容器
  • docker cp /root/test.txt imageName:/home/ :拷贝本地文件/root/test.txt到容器中的/home/目录下
  • docker cp imageName:/home/test.txt /root :拷贝容器中的文件到宿主机上
  • docker run -itd -v 要挂载目录:容器中的目录 imageName:tag:挂载指定目录到指定容器中
  • docker commit -a "author" -m "description" containerId myImageName:Tag :基于现有的镜像创建自己的镜像
    配置阿里云加速器加速镜像下载(可以去阿里云控制台寻找专属的)
    mkdir -p /etc/docker
    tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://v2ltjwbg.mirror.aliyuncs.com"]
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker

Dockerfile

使用Dockerfile构建镜像
dockerfile
# this is a dockerfile
FROM centos:7 # 基于centos:7镜像构建
MAINTAINER sugar [email protected] #作者信息
RUN echo "start build image" # 运行命令
WORKDIR /home/sugar #工作目录
COPY test.txt /home/sugar # 复制文件
RUN yum install -y net-tools # 运行安装命令
开始构建末尾的一点代表当目录
docker build -t mycentos:2 .

常用指令

FROM #基于哪个镜像
MAINTAINER 作者信息
COPY #复制文件(单纯的复制,不做其他操作)
ADD #复制文件如果是 .tar.gz 还会解压
WORKDIR #工作目录
ENV #设置环境变量
EXPOSE #暴露容器端口
RUN #执行命令 作用于镜像层面
# 有多条时 在容器启动时执行最后一条
ENTRYPOINT #执行后面的命令 作用于容器层面
CMD #指定后面的命令 作用于容器层面 (会被传参覆盖)
docker run imageName:tag params
命令格式
  • shell:RUn echo "hello world
  • exec:RUN ["yum","install","-y","net-tools"]

镜像分层结构

查看镜像的构建历史
docker history imageName:tag
镜像只读,容器可读可写

构建java环境

解压
tar -xf jdkxxxx
移动 jdk /usr/local
mv jdk /usr/local/jdk
配置环境变量
vi /etc/profile
加入已下内容在末尾
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
生效环境变量
source /etc/profile
检验
java -version
拷贝tomcat到指定目录中然后在bin目录中找到startup.sh启动
需要关闭防火墙才能访问(也可放行端口)
dockerfile构建
FROM centos:7
ADD jdk-8u211-linux-x64.tar.gz /usr/local
RUN mv /usr/local/jdk1.8.0_211 /usr/local/jdk8
ENV JAVA_HOME=/usr/local/jdk8
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
ADD apache-tomcat-8.5.35.tar.gz /usr/local
RUN mv /usr/local/apache-tomcat-8.5.35 /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
启动
docker run -itd -p 8081:8080 -v /root/tomcatWebapps:/usr/local/tomcat/webapps/ROOT centos:java /bin/bash

构建nginx镜像

dicjerfile
FROM centos:7
ADD nginx-1.16.0.tar.gz /usr/local
COPY nginx_install.sh /usr/local
RUN sh /usr/local/nginx_install.sh
EXPOSE 80
shell
#!/bin/bash
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
cd /usr/local/nginx-1.16.0
./configure --prefix=/usr/local/nginx && make && make install
运行
docker run -itd -p 8081:80 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"
经测试可以后台启动容器后 进入容器再打开nginx
docker exec -it containerId /bin/bash
cd /usr/local/nginx/sbin
./nginx

mysql镜像

拉取
docker pull mysql:5.7
后台运行
docker run --name test-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=a123456 -d mysql:5.7
进入容器(并设置字符编码)
docker exec -it test-mysql env LANG=C.UTF-8 /bin/bash

网络

  • bridge 桥接
  • host 主机
  • none