从入门到部署玩转Docker保姆级别教程

Docker学习整理

1.Docker 名词

名词解释

名词 解释说明
镜像(image) docker镜像是一个模板,通过这个模板来创建多个容器服务
容器(container) Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的
仓库(repository) 存放镜像的地方,类似maven仓库。分为共有和私有

2.Docker安装以及镜像、容器 常见命令

安装命令:

yum install docker

启动docker:

systemctl start docker.service

设置开机启动

systemctl enable docker.service

查看版本:

docker version

镜像命令:

docker images 查看本地所有镜像
docker search 搜索仓库中的镜像
docker pull 下载镜像
docker rmi 删除镜像

容器命令:

docker run[可选参数] image 新建容器并启动
–name 容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口 e g:8080:8080
docker ps 查看所有正在运行的容器
-a 会显示历史运行过的容器
-n=? 显示最近创建的容器
-q 只显示容器的编号
exit 停止退出交互模式容器
Ctrl + P + Q 不停止退出容器
docker rm 删除容器(不能删除正在运行的容器,需要加-f)
docker rm -f $(docker ps -aq) 删除所有容器
docker start [container id] 启动容器
docker restart [container id] 重启容器
docker stop [container id] 停止当前运行容器
docker kill [container id] 强制停止当前容器

常用其他命令:

docker logs 查看日志
docker top 查看容器中进程信息
docker inspect 查看容器元数据
docker exec -it [容器id] /bin/bash 进入当前正在运行的容器(新的终端)
docker attach 进入当前正在运行的容器(容器正在执行的终端)
docker cp 容器id:容器内路径 目的主机路径 从容器内拷贝文件到主机

3.Dockerfile知识梳理:

FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,名字+邮箱
RUN #镜像构建的时候被需要运行的命令
ADD #步骤,tomcat镜像,这个tomcat压缩包,添加内容
WORKDIR #镜像的挂载目录
VOLUME #挂载的目录
EXPOST #保留端口配置
CMD #指定这个容器启动的时候要运行的命令,只有之后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
COPY #类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量
从入门到部署玩转Docker保姆级别教程_第1张图片

4.Docker将jar包制作为镜像,在Docker环境运行

首先我们将一个简单的Springboot项目打包成jar

然后将项目上传至Linux系统

系统提前装好docker环境

首先我们将准备的xxx.jar,Dockerfile拷贝到我们的CentOS 7机器上

下图idea 进行打好的包

从入门到部署玩转Docker保姆级别教程_第2张图片

我们拷贝的路径为:

/usr/local/test

先查询下jdk源:

docker search java

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0UrUdZd-1652335758728)(C:\Users\Yuntai1\AppData\Roaming\Typora\typora-user-images\1652176601970.png)]

编写的Dockerfile文件为:

FROM docker.io/ascdc/jdk8
VOLUME /tmp
ADD ToolApi-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

上面命令的相关解释:

从docker仓库获取jdk作为我们项目的容器
VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/usr/local/test目录下创建了一个临时文件,并连接到容器的/tmp。
项目的ToolApi-0.0.1-SNAPSHOT.jar 作为app.jar添加到容器。
ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向/dev/urandom 作为 Entropy Source

构建Docker镜像

我们在/usr/local/dev目录下,执行Docker的命令来构建镜像。

docker build -t test/spring-boot-docker-t:latest .

这个命令就是使用Dockerbuild命令来构建镜像,并给镜像起了一个名字ludashi/spring-boot-docker-t其TAGlatest在当前文件夹下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFJHQ7t5-1652335758730)(C:\Users\Yuntai1\AppData\Roaming\Typora\typora-user-images\1652334996625.png)]

我们使用docker images来查看所有的镜像

docker images

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQnzGtQ1-1652335758731)(C:\Users\Yuntai1\AppData\Roaming\Typora\typora-user-images\1652335164952.png)]

我们发现镜像列表里面有我们生成的镜像test/spring-boot-docker-t

ps补充删除镜像命令

docker rmi test/spring-boot-docker-t

运行镜像
镜像构建成功之后,就可以运行容器了:

docker run -d --name spring-boot-docker -p 8899:8899 test/spring-boot-docker-t

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QqTw2gCr-1652335758731)(C:\Users\Yuntai1\AppData\Roaming\Typora\typora-user-images\1652335232764.png)]

这个表示docker容器在停止或服务器开机之后会自动重新启动 --restart=always 这块可不执行

docker run -d --restart=always --name ToolApi-0.0.1-SNAPSHOT -p 8899:8899 test/spring-boot-docker-t

然后已经运行的docker容器怎么设置自动重启? 执行下面命令:

 docker update --restart=always ToolApi-0.0.1-SNAPSHOT

然后docker ps 看看你的容器有没有在运行即可

docker ps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHMqIYZd-1652335758732)(C:\Users\Yuntai1\AppData\Roaming\Typora\typora-user-images\1652335295516.png)]

ps 补充删除容器:

(先停止对应容器再去删除对应容器)

docker stop 4ef5343ddd32

docker rm 4ef5343ddd32(对应docker ps 的CONTAINER_ID)

docker logs --tail 300 -f spring-boot-docker-t 查看启动日志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fL44nq9N-1652335758733)(C:\Users\Yuntai1\AppData\Roaming\Typora\typora-user-images\1652335435273.png)]

访问浏览器:

从入门到部署玩转Docker保姆级别教程_第3张图片

你可能感兴趣的:(docker,容器,运维)