Docker学习遇到的问题和心得

x33g5p2x  于2022-01-09 转载在 Docker  
字(1.2k)|赞(0)|评价(0)|浏览(361)

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

  1. 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:

  1. FROM centos
  2. VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
  3. CMD echo "-------end------"
  4. CMD /bin/bash

然后构建他:注意最后有个.

  1. docker build -f /home/docker-test-volume/dockerfile1 -t kuangshen/centos .

然后我们启动两个容器互相挂载:

总结:

  1. 1docker从基础镜像运行一个容器
  2. 2、执行一条指令并对容器做出修改
  3. 3、执行类似 docker commit 的操作提交一个新的镜像层
  4. 4Docker再基于刚提交的镜像运行一个新容器
  5. 5、执行dockerfile中的下一条指令直到所有指令都执行完成!

DockerFile指令:

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

相关文章

最新文章

更多