Docker学习遇到的问题和心得

导读:本篇文章讲解 Docker学习遇到的问题和心得,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

首先写一个直接启动可视化界面的命令:

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 的操作提交一个新的镜像层
4Docker再基于刚提交的镜像运行一个新容器
5、执行dockerfile中的下一条指令直到所有指令都执行完成!

DockerFile指令:

FROM     # 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER  # 镜像维护者的姓名混合邮箱地址
RUN      # 容器构建时需要运行的命令
EXPOSE    # 当前容器对外保留出的端口
WORKDIR    # 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV      # 用来在构建镜像过程中设置环境变量
ADD      # 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY     # 类似ADD,拷贝文件和目录到镜像中!
VOLUME    # 容器数据卷,用于数据保存和持久化工作
CMD      # 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最
后一个生效!
ENTRYPOINT  # 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD    # 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的
ONBUILD被触发

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81012.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!