docker学习笔记

docker是一个能够把开发的应用程序自动部署到容器的开源引擎
docker依赖于写时复制模型
docker客户端和服务器:c/s架构 docker客户端连接到守护进程或者服务器
docker镜像:比如msyql数据库的镜像,nginx的镜像等
registry:保存用户构建的镜像,公有私有
镜像是docker生命周期中的构建或打包阶段,容器是启动或执行阶段

1. centos 7 安装docker
yum -y update
设置 Docker CE 资源库:  
sudo yum install -y yum-utils    
sudo yum makecache fast
安装docker
sudo yum -y install docker-ce


设置mirror    
新版的 Docker 使用 /etc/docker/daemon.json 来配置 Daemon
在该配置文件中加入(没有该文件的话,请先创建一个):从阿里的镜像上pull
{
"registry-mirrors": ["https://p8b4jflv.mirror.aliyuncs.com";]
}

开放管理端口映射
管理端口在 /lib/systemd/system/docker.service 文件中
将其中第11行的 ExecStart=/usr/bin/dockerd 替换为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
(此处默认2375为主管理端口,unix:///var/run/docker.sock用于本地管理,7654是备用的端口)
将管理地址写入 /etc/profile   
echo 'export DOCKER_HOST=tcp://0.0.0.0:2375' >> /etc/profile  
source /etc/profile  
启动docker
systemctl daemon-reload && service docker start
systemctl daemon-reload && service docker restart
sudo docker run hello-world

docker版本
2. docker 使用
docker images查看镜像
拉centos镜像
sudo docker pull centos  从阿里镜像pull就很快
查看centos镜像
创建容器:基于镜像centos创建容器,并且进入
sudo docker run -i -t centos /bin/bash
-i 保证容器中的STDIN是开启的
-t 创建容器时分配一个伪终端
exit 退出
查看所有的(-a)/运行的容器  下图显示 centos系统的镜像 已经不再运行了

docker run --name refactor -i -t centos /bin/bash,可以通过–name参数指定这个容器的名称 refactor ,以后可以该名称代替容器ID使用。名称需要保证唯一性
启动已经停止运行的容器:docker start 容器的名字或ID,可以通过容器的名称重启启动已经停止的容器,同样的使用容器的ID也可以。同样的restart会重启一个容器
连接到 运行中 的容器:docker attach 容器名字或ID  docker attach refactor
删掉容器
docker container rm refactor
docker rm `docker ps -a -q`
3. docker_case1 使用docker构建一个现有的服务
创建守护式运行的容器(长期运行的容器)
docker run --name refactor -d centos /bin/bash -c "while true;do echo hello; sleep 1;done
查看日志
docker logs -ft drefactor
查看进程 
docker top refactor

工程配置(工程放在服务器上打包啊)
Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD docker_spring_boot.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar” ]

  • VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
  • 项目的 jar 文件作为 “app.jar” 添加到容器的
  • ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source
pom.xml
<!--properties节点中设置docker镜像的前缀“springboot”-->
< docker.image.prefix >springboot </ docker.image.prefix >

< plugin >
    < groupId >org.apache.maven.plugin </ groupId >
    < artifactId >docker-maven-plugin </ artifactId >
    < version >0.4.11 </ version >
    < configuration >
        < imageName >${docker.image.prefix}/${project.artifactId} </ imageName >
        < dockerDirectory >src/main/docker </ dockerDirectory >
        < resources >
            < resource >
                < targetPath >/ </ targetPath >
                < directory >${project.build.directory} </ directory >
                < include >${project.build.finalName}.jar </ include >
            </ resource >
        </ resources >
    </ configuration >
</ plugin >


出现问题1:No plugin found for prefix 'docker' in the current project and in the plugin groups
需要maven配置

<pluginGroup>com.spotify</pluginGroup>

打包配置
mvn install打包
jar包和Dockerfile放在同一目录下

表示把程序中8080端口映射到8083
docker run -d -p 8083:8080 docker
-d表示后台运行

至此,把一个工程注入容器就结束了
docker ps查看镜像
停止
docker stop 98d164f20b64
移除
docker rm 98d164f20b64 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值