java docker 使用方法,docker用法

TOC

docker安装

wget -qO- https://get.docker.com/ | sh

# 或者 apt install docker.io

docker --version

docker system info

如果遇到permission的问题,则将当前用户添加到用户组,并且之后要记得重新登录(注销当前用户)

$ sudo groupadd docker #创建docker用户组

$ sudo usermod -aG docker ${USER} #将当前用户加入docker用户组

$ sudo systemctl restart docker #重启docker服务

$ su root #切换到root用户,或注销再登录当前用户

$ su ${USER} #再切换到原来的应用用户以上配置才生效

下载镜像和运行、删除

docker search xxx //从docker hub查询xxx镜像

docker image pull xxx //安装xxx镜像

docker container run xxx [cmd] //启动一个xxx容器,并在其中运行cmd命令

# 或者 docker run -it [image] [cmd]

docker images #查看当前docker客户端有哪些images

删除则是加上rm参数,不过多记录了

更多命令

善用help

docker run -p [port in container]:[port in physical system] -d [image] [command] #端口映射

docker ps #类似于linux ps命令,查看在运行的container信息,-a 则是查看所有

docker stop [container] #停止container

docker kill [container] #同上,强制杀死

docker start/restart [container] #启动/重启container

Dockerfile

如果需要将一个应用容器化,则需要有一个Dockerfile来描述镜像的构建过程。

运行以下命令则可以读取Dockerfile,并将应用容器化

docker build -t [image-name] . #要注意这里最后有一个点

# -t代表终端

# -i代表交互式命令

例如,以下

$ cat Dockerfile

FROM alpine

LABEL maintainer="nigelpoulton@hotmail.com"

RUN apk add --update nodejs nodejs-npm

COPY . /src

WORKDIR /src

RUN npm install

EXPOSE 8080

ENTRYPOINT ["node", "./app.js"]

镜像是一层一层构建的,一般新构建的镜像可以基于另外一个镜像上构建,比如上述例子,其镜像则基于alpine镜像构建。

FROM 指令用于指定要构建的镜像的基础镜像。它通常是 Dockerfile 中的第一条指令。

LABEL 打标签,是一个key-value对。

RUN 在build时执行,每个 RUN 指令创建一个新的镜像层,所以应该把尽量多的执行命令放在一个RUN里面,这时候使用‘\’换行。

CMD 在docker run时运行,且仅最后一条CMD有效。

ENTRYPOINT 指令用于指定镜像以容器方式启动后默认运行的程序,类似于CMD。

COPY 指令用于将文件作为一个新的层添加到镜像中。通常使用 COPY 指令将应用代码赋值到镜像中。

ADD 同COPY,但是对压缩格式为 gzip, bzip2 以及 xz 的文件,会自动解压缩到目标路径下。所以如果不需要自动解压,则使用COPY。

EXPOSE 指令用于记录应用所使用的网络端口。

ENV 环境变量,也是key-value对。

其他的 Dockerfile 指令还有 ONBUILD、HEALTHCHECK 等。

在执行build时,按照顺序执行

基于alpine镜像创建镜像

设置label

在alpine镜像中运行命令

将当前路径文件 . 复制COPY到 apline 的 /src中

设置alpine 的 /src 为工作目录,此时如果进入这个容器,则默认进入到/src 路径下

设置端口

设置默认app,如果运行docker run -it [image-name] 则默认执行该app,如果不指定则会进入容器交互式终端

基于以上,可以把一些项目打包成一个镜像,做到即开即用了。

docker应用场景

在非web项目中,能不能用到docker呢?比如Android底层开发?

将本地文件映射(挂在到docker中)

#在eis容器中,将本地的eisdebugsite挂在到/www下

docker container run -d -p 8080:8080 --name eisweb --volume /home/mi/project/eisdebugsite/:/www eis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值