在家学docker
docker进阶
# 安装docker
# 卸载旧版本的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 需要的安装包
yum install -y yum-utils
# 设置镜像仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo # 默认是国外的,很慢
# 使用阿里云镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装前更新yum索引
yum makecache
# 安装docker相关的内容
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动docker
systemctl start docker
# 查看启动信息
docker version
# 查看helloworld
docker run hello-world
# 卸载docker
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 删除docker资源
sudo rm -rf /var/lib/docker # docker的默认工作路径
sudo rm -rf /var/lib/containerd
容器数据卷
# 匿名挂载
docker run -v 容器内路径
# 具名挂载
docker run -v 卷名:容器内路径
# 指定容器外的挂载路径
docker run -v /容器外路径:容器内路径
所有docker容器内的卷,没有指定目录的情况都放在/var/lib/docker/volumes/xxx/_data
初识dockerFile(数据容器卷)
# 编写dockerFile
vim dockerfile1 # 进入如下编辑界面,输入i进入编辑模式
FROM centos
VOLUME ["volume01", "volume02"]
CMD echo "----end----"
CMD /bin/bash
# 先esc,再退出并保存
:wq
# 通过dockerfile创建镜像(最后一个.表示创建在当前目录下)
docker build -f dockerfile1 -t zengr/centos:1.0 .
# 查看容器信息
docker inspect 容器id
# 退出当前容器命令(容器不关闭运行)
ctrl p q
# 容器间实现数据共享(创建docker02容器,它的卷继承了docker01,实现数据共享)
docker run -it --name docker02 --volumes-from docker01 zengr/centos:1.0
DockerFile
dockerFile是用来构建docker镜像的文件,它的构建步骤:
# 1、编写一个 dockerfile 文件
# 2、docker build构建成为一个镜像
# 3、docker run运行镜像
# 4、docker push发布镜像(dockerHUb、阿里云仓库)
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁做的,姓名+邮箱
RUN # 镜像创建的时候需要运行的命令
ADD # 添加的内容
WORKDIR # 镜像工作的目录
VOLUME # 挂载的目录
EXPOSE # 暴露的端口(和-p一个意思)
CMD # 指定容器启动时运行的命令(只有最后一个生效)
ENTRYPOINT # 指定容器启动时运行的命令(可以追加命令)
ONBUILD # 当构建一个被继承DockerFile这个时就会运行ONBUILD指令
COPY # 类似ADD,将文件拷贝到镜像中
ENV # 构建时设置环境变量
创建一个自己的centos
# 创建dockerfile
FROM centos
MAINTAINER zengr<448751172@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
# docker build的时候执行RUN
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
# docker run的时候执行CMD
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
# 使用docker build构建
docker build -f mydockerfile-centos -t mycentos:0.1 .
实战练习:创建Tomcat镜像
# 首先需要将tomcat需要的运行时环境如jdk、tomcat安装包放在本机环境中
# 编写Dockerfile
FROM centos:7
MAINTAINER zengr<448751172@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk_8u1-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/
RUN yum -y install vim
# 配置环境变量
ENV MYPATH /usr/local
# 设置工作目录
WORKDIR $MYPATH
# 配置jdk、tomcat的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 暴露8080端口
EXPOSE 8080
# 执行命令
CMD /usr/local/apache-tomcat-9.0.22/bin/start.sh && tail -F /usr/local/apache-tomcat-9.0.22/logs/catalina.out
# 编写完Dockerfile之后,构建镜像
docker build -t diy-tomcat .
# 运行容器
docker run -d -p 9090:8080 --name zengrtomcat -v /home/zengr/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/zengr/build/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.22/logs diy-tomcat
# 在本机放上自己的项目文件,即可访问docker部署的tomcat
发布自己的镜像(dockerHub、阿里云镜像)
# 登录dockerHub
docker login -u zengr
password:123456
# push到dockerHub(尽量台上tag版本号)
docker push diy-tomcat:[tag]
# 发布到阿里云镜像
docker login -u 1568012458 registry.cn-beijing.aliyuncs.com
password 123456
...
发布SpringBoot微服务项目
# 通过package打包项目,生成jia包
# 创建Dockerfile文件
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
# 将生成的jar包、Dockerfile文件放在服务器需要运行docker命令的目录下,通过build创建镜像(zengr:1.0)
docker build -t zengr:1.0 .
# 运行容器
docker run -d -P --name zengr-springboot-web zengr:1.0
# 测试
curl localhost:49153(随机映射端口)
docker compose
# 发布自己的带有redis的SpringBoot项目
# 构建Dockerfile,创建SpringBoot项目镜像
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
# 构建docker-compose.yml文件,编排项目(SpringBoot、redis)
version '3.8'
services:
zengr:
build: .
image: zengr
depends_on:
- redis
ports:
- "8080:8080"
redis:
image: "library/redis:alpine"
# 将以上文件丢到服务器目录下,启动(jar包、Dockerfile、docker-compose.yml)
docker-compose up
# docker-compose也是单机的,如果需要用到集群的环境,那么就要上docker-swarm
docker stack deploy -c 应用名称
- 经研究,发现分行有自己的docker镜像仓库。