学习docker记录(二)
创始人
2024-04-01 21:13:03

查看命令

输入docker image或者 docker container 可以出现对应的命令:

docker container 相关命令

docker image命令

也可以输入docker --help查看。

操作镜像

首先拉取镜像

执行docker pull docker.io/library/ubuntu:18.04命令或者docker pull ubuntu:18.04,因为是从docker hub拉取ubunto官方镜像,可以省略掉仓库地址以及仓库名中的用户名。

其次运行镜像

执行命令:
$ docker run -it --rm \ubuntu:18.04 \bash

运行镜像其实就是创建一个容器并且运行启动这个容器:

● -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
● --rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
● ubuntu:16.04:这是指用 ubuntu:16.04 镜像为基础来启动容器。
● bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。

每一行的结尾的 \ 是换行符,这样看起来更清晰。

执行完命令之后就会进入到这个创建ubuntu的容器的终端中。
执行命令 cat /etc/os-release 查看一下操作系统的版本:

在这里插入图片描述

确实是拉取的ubuntu:18.04的版本。输入exit可以退出容器。

创建镜像

用docker commit来对某个镜像做出改动,然后制作成定制的镜像:

  • 创建一个nginx的镜像: docker run --name testNginx -d -p 9009:80 nginx (刚开始的时候,访问域名:9009一直访问失败,原来是ECS安全组端口没有放行)
  • 进入到这个容器中,通过命令修改nginx文字: docker exec -it testNginx bash echo '

    Hello, Docker!

    ' > /usr/share/nginx/html/index.html exit
  • 再次访问,会发现访问页面修改了。

docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

执行命令 docker comit --author zhuruilin testNginx testNginx:0.2

在这里插入图片描述

可以发现新制作的镜像就查询到了,但是这种docker commit定制的镜像是在另外的镜像的基础上执行了很多其他命令之后得到的,但是执行过什么命令其他使用者是不会知道的,创建人不一定就能完整记得。而且在其他镜像上再次定制镜像,只会让镜像变得越来越臃肿,所以正常不使用这种方式来制作镜像,应该是Dockerfile的方式来制作镜像。

部署一个简答的springboot项目

项目极其简单,就是有一个固定写死返回字符的接口:

在这里插入图片描述

使用idea中的maven工具打成一个jar包,利用工具上传jar包到服务器,cd到jar包的同级目录下,新增Dockerfile,

vim DockerfileFROM openjdk:8-jre
MAINTAINER zhuruilin
VOLUME /www/wwwroot/dockerPractise/day1029
RUN mkdir -p /www/wwwroot/dockerPractise/day1029
WORKDIR /www/wwwroot/dockerPractise/day1029
ENTRYPOINT ["java","-jar","dockerDemo-1.jar"]

根据Dockerfile制作镜像:

docker build -t dockerdemo:0.1 .

末尾的点不能缺失,构建镜像完毕之后就可以根据镜像创建容器

这里末尾的 . 并不是指当前目录,docker build 是调用docker remote api 去都调用docker 服务端接口,docker build 会将一些本地的文件发送给服务端, 因为通常是在Dockerfile文件同级目录下执行docker build,所以将这一层目录作为上下文路径。如果Dockerfile中有COPY ,ADD命令,会将本地文件传给docker服务端 ; 如果Dockerfile中这么写:

 COPY    /test/test1.jar   /result

就会将docker run命令中指定的上下文路径中的 /test/test1.jar包复制,而不是复制 Dockerfile目录中的 /test/test1.jar文件。

 docker run --name dockerdemo  -d -p 90009:9009 dockerdemo:0.1

访问域名:9009/docker/test,会出现文字,说明运行成功。

出现问题:
使用命令 docker container ls,并没有运行的容器,使用 docker container ls -a 才可以看见容器,说明运行容器失败。
,删除掉这个容器,再次创建,命令如下:

docker run --name demo1030 -p 9009:9009 demo:0.1 -d

会出现提示 Error: Unable to access jarfile dockerDemo-1.jar。

最后发现在Dockerfile中添加一个 copy xxx.jar /www/wwwroot/dockerPractise/day1029/test/xx.jar,
也就是说没有把jar包发送给docker服务端,导致启动jar失败。修改完Dockerfile之后就可以了。

相关内容

热门资讯

长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...