docker基础有:仓库(可以使用官网的仓库,也可以本地搭建自己的仓库),守护进程,镜像,容器。
1:systemctl start docker #启动docker守护进程 stop restart 等。
2:构建镜像,可以pull从仓库中拉取镜像到本地。也以build新的image
3:创建容器 create 可以与run的参数差不多。 如:docker create --name mysql5.7 -p 3306:3306 -v /opt/docker-mysql/conf.d:/etc/mysql/conf.d -v /opt/docker-mysql/var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7.28
4:启动容器。如:docker start mysql5.7
相关所有命令可以输入:docker -h 查看所有的命令
这里讲一下docker的构建image:
1:原始的Dockerfile来创建image
第一步:写Dockerfile
from java:8
volume /tmp/dockervolume
workdir /tmp/runroot
add eureka-server-1.0-SNAPSHOT.jar eureka-center.jar
expose 8000
entrypoint ["java","-jar","eureka-center.jar"]
from java:8,表示构建的这个镜像依赖java:8 这个镜像
volume /tmp/dockervolume 指定匿名挂载卷
workdir /tmp/runroot 指定我们这个程序执行的根目录
add ,指添加文件到我们的image中
expose 声明端口
entrypoint 这个和cmd命令差不多。这个可以支持run我们的容器时,带一些参数输入。
第二步:执行build命令,构建image了:
docker build -t localhost:5000/eureka-center:1.0.0 .
这一步就是结合 -t(即tag命令)来构建一个指定本地仓库的image,最后面的有一个".",这个表示这个命令在当前目录执行。
我们可以使用简单的run,可以帮我们把程序运行到一个新创建的container里面去。也可以先用docker create之后再用docker start xxx
docker run -d -p 8001:8000 --name eurekaservice localhost:5000/eureka-center:1.0.0
这里大家说一下 volume 与run里面的 -v 的区别。 Dockerfile里面是声明了一个挂载的卷目录,在运行时往volume里面写入文件时,docker容器是不会增大的。会默认到直接运行docker机器找一个目录默认指定到这个卷中去(/var/lib/docker/volumes)。
如果我们指定-v 这里就直接将对应的日志目录映射到外面来了。如:
docker run -v /home/tmp:/springcloud/logs --rm --name eureka-service2 -d -p 8000:8000 localhost:5000/eureka-center:1.0.1
这样就将docker里面的/springcloud/logs 这个目录映射到 /home/tmp这个外面的目录了
这里只讲解原理,至于基本的命令啥请参考: