1.容器数据卷
用于容器内的数据在容器外(宿主机)的持久化和同步,相当于同一宿主机内的容器间的数据共享。(注意:新版用--mount)
docker run -it -v [宿主机路径]:[容器内路径] [镜像名]
docker ps 获取容器id
docker inspect [容器id]
例子:
Use containerized databases | Docker Docs
docker search mysql
docker pull mysql:5.7
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc./mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 --name myMysql mysql:5.7
匿名挂载
-v 容器内路径 ,不写宿主机路径
docker run -d -p --name -v /etc./mysql mysql
具名挂载
docker run -d -p --name -v [卷名]:/etc./mysql mysql
查看数据卷
docker volume ls
docker volume inspect [卷名]
卷的读写权限
ro #readonly
docker run -d -p --name -v [juming]:/etc./mysql:romysql
rw #readwrite
docker run -d -p --name -v [juming]:/etc./mysql:rwmysql
2.DockerFile
用来构建docker镜像的构建文件,命令脚本,通过脚本生成镜像
1.创建DockerFile_test文件,文件中的内容大写
FROM centos
VOLUME ["volume01","volume02"] #挂载数据卷目录
CMD echo "---end---"
CMD /bin/bash
2.docker build -f [DockerFile_test的全路径] -t [镜像名]:[TAG(如:1.0)]
3.docker run -it [镜像名]
4.docker push #发布镜像
3.DockerFile构建过程
每个指令都是大写
执行从上而下顺序执行
#表示注释
每一个指令都会创建提交一个新的镜像层,并提交
dockerfile是面向开发
通过dockerfile构建dockerimages然后用docker容器运行
DockerFile指令
FROM
MAINTAINER
RUN
ADD
WORKDIR
VOLUME
ECPORT
CMD
ENTRUPOINT
ONBUILD
COPY
ENV
实战:
FROM centos
MAINTAINER [作者]
COPY a.txt /usr/local/a.txt
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORK $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -f /url/local/apache-tomcat-9.0.22/bin/logs/catalina.out
4.流程
编写dockerfile->通过dockerfile构建镜像->运行镜像
5.数据卷容器
docker run -it --name docker01 [镜像名]:[TAG]
docker run -it --name docker02--volumes-from docker01[镜像名]:[TAG] #相当于继承docker01
6.提交镜像
官方的和阿里云的
7.Docker网络(容器互联)
ip addr #查看网卡
#veth-pair
--link
docker network ls
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet #自己定义的网络
docker run -d -P --name tomcat01 --net mynet tomcat
docker run -d -P --name tomcat02 --net mynet tomcat
docker network inspect mynet
docker run -d -P --name tomcat03
docker network connect mynet tomcat03