赞
踩
输入docker image或者 docker container 可以出现对应的命令:
也可以输入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来对某个镜像做出改动,然后制作成定制的镜像:
docker exec -it testNginx bash echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html exit
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
执行命令 docker comit --author zhuruilin testNginx testNginx:0.2
可以发现新制作的镜像就查询到了,但是这种docker commit定制的镜像是在另外的镜像的基础上执行了很多其他命令之后得到的,但是执行过什么命令其他使用者是不会知道的,创建人不一定就能完整记得。而且在其他镜像上再次定制镜像,只会让镜像变得越来越臃肿,所以正常不使用这种方式来制作镜像,应该是Dockerfile的方式来制作镜像。
项目极其简单,就是有一个固定写死返回字符的接口:
使用idea中的maven工具打成一个jar包,利用工具上传jar包到服务器,cd到jar包的同级目录下,新增Dockerfile,
vim Dockerfile
FROM 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之后就可以了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。