首先写一个直接启动可视化界面的命令:
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -- privileged=true portainer/portainer
下面说一下数据库的数据挂载:比如我们使用docker运行了MySQL的容器,然后将内部MySQL的存放数据的位置:/var/lib/mysql挂载在外部Linux系统位置:/home/mysql/data,然后启动以后使用Navicat连接数据库的时候出现了问题:
解决ERROR 1130: Host ‘192.168.1.3’ is not allowed to connect to this MySQL server 方法
这个原因是因为docker内部的数据库没有设置外部访问权限
解决方案:
首先进入内部数据库:使用docker exec:
然后进入数据库命令界面: mysql -u root -p
然后先使用数据库:use mysql
再 show tables:
再改user表:将权限改为%
然后就可以连接成功了
测试:
然后是Dockefile:
我们首先自己写一个dockerfile:
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "-------end------"
CMD /bin/bash
然后构建他:注意最后有个.
docker build -f /home/docker-test-volume/dockerfile1 -t kuangshen/centos .
然后我们启动两个容器互相挂载:
总结:
1、docker从基础镜像运行一个容器
2、执行一条指令并对容器做出修改
3、执行类似 docker commit 的操作提交一个新的镜像层
4、Docker再基于刚提交的镜像运行一个新容器
5、执行dockerfile中的下一条指令直到所有指令都执行完成!
DockerFile指令:
FROM # 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER # 镜像维护者的姓名混合邮箱地址
RUN # 容器构建时需要运行的命令
EXPOSE # 当前容器对外保留出的端口
WORKDIR # 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV # 用来在构建镜像过程中设置环境变量
ADD # 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY # 类似ADD,拷贝文件和目录到镜像中!
VOLUME # 容器数据卷,用于数据保存和持久化工作
CMD # 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最
后一个生效!
ENTRYPOINT # 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD # 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的
ONBUILD被触发
|