docker命令可以参考:http://www.bubuko.com/infodetail-1345326.html
镜像加速:https://www.docker-cn.com/registry-mirror
安装docker:
检查内核版本,必须是3.10及以上
uname -r
安装docker
yum install docker
输入y,确认安装
启动docker: systemctl start docker
看版本:docker -v
设置开机启动:systemctl enable docker
下载zookeeper:docker pull registry.docker-cn.com/libraray/zookeeper
删除其中一个镜像:docker rmi -f runoob/ubuntu:v4
用yum install docker时:
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: PackageKit
Memory : 106 M RSS (450 MB VSZ)
Started: Thu Jun 14 12:55:27 2018 - 03:09 ago
State : Sleeping, pid: 2878
可能是系统自动升级正在运行,yum在锁定状态中。
已经有一个yum进程在运行了,使用kill干掉它:
01 02 03 04 |
|
如果kill对付不了它,可以通过强制关掉yum进程:
01 |
|
然后就可以使用yum了。
命令:
docker run -e ES_JAVA_OPTS="-Xms520m -Xmx520" -d -p 9200:9200 -p 9300:9300 --name ES01 5acf0e8da90b
-e ES_JAVA_OPTS="-Xms520m -Xmx520"(指定初始堆内存和最大堆内存)
-d 后台运行 -p 虚拟机中的端口号 : 容器中的端口号 和做映射(每启动一个镜像可以理解为启动了一个新的内核,独立的端口号,即启动两个服务,可以用同一个端口号,因为他们不相关) --name 设置名字 5acf0e8da90b 标识镜像的CONTAINER ID
Dockerfile详解:
注意:里面的路径都要用绝对路径,不能用相对路径。否则会报错(解决Unable to access jarfile)
CMD:启动容器后执行其命令,如果指定运行复制进去的文件(run.sh),要用绝对路径。不能用相对路径。
COPY和ADD:
都是把当前主机的文件复制进镜像中。
区别:COPY单纯的复制,ADD是会对需要复制文件进行解压操作。
如果想要add/copy,文件必须在Dockerfile同一个根目录下
docker容器的理解:
容器本身就是一个没有内核的centos文件系统,我们自己制作镜像后,把镜像放到容器中运行,
在进入到容器中,就会发现里面的目录结构和宿主系统的目录结构一模一样,这就证明了那一点。
如果要把自己的项目制作成一个镜像,就可以在制作镜像的时候,复制进镜像里面,如果需要运行,
两种方法,1.制作镜像的时候,写好指令,2.制作镜像,启动后,进入到镜像里面,启动项目。
后台方式运行容器:docker run -d 容器名
进入容器的命令:docker exec -t[it] 容器id /bin/sh
构建容器;docker build -f /root/workspace/project/Dockerfile -t myproject .
在使用docker容器时,有时候里边没有安装vim,可:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
等更新完毕以后再敲命令:apt-get install vim命令即可。
启动容器的时候指定挂载目录:
docker run -d -p 8080:8080 -v /root/workspace/project/log:/usr/docker-demo/log --privileged=true docker-demo
Dockerfile文件:
FROM java:8 #表示构建镜像的时候会去下载jdk8
MAINTAINER meijun<1255738994@qq.com>
# VOLUME 用这个做挂会出现各种问题,如不同步,还是在启动容器的时候用-v指定
#VOLUME ["/root/workspace/project/log","/usr/docker-demo/log"]
COPY docker-demo /usr/docker-demo
# 构建的容器是没有vi的,即要自己手动安装,在这里安装也会报错,说是没有权限
# 可以在容器启动之后,在容器里面安装
#RUN apt-get update && apt-get install vim -y
# javaweb项目制作成镜像,需要连接外部数据库,自己测试时报错:
# 错误提示: timezone region not found
# 错误原因:docker 容器内时区不是 CST 导致
# 通过这两个设置下时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 当前容器开放的端口号
EXPOSE 8080
#ENTRYPOINT ["java","-jar","/docker-demo/docker-demo.jar"]
CMD /usr/docker-demo/run.sh