观看记录
https://www.bilibili.com/video/BV1gr4y1U7CY?p=61&t=504.4

编写 Dockerfile

  1. FROM centos:7
  2. MAINTAINER chu<doraehmon@163.com>
  3. ENV MYPATH /usr/local
  4. WORKDIR $MYPATH
  5. #安装vim编辑器
  6. RUN yum -y install vim
  7. #安装ifconfig命令查看网络IP
  8. RUN yum -y install net-tools
  9. #安装java8lib
  10. # RUN yum -y install glibc.i686
  11. # RUN mkdir /usr/local/java
  12. # #ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
  13. # ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
  14. # #配置java环境变量
  15. # ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
  16. # ENV JRE_HOME $JAVA_HOME/jre
  17. # ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
  18. # ENV PATH $JAVA_HOME/bin:$PATH
  19. EXPOSE 80
  20. CMD echo $MYPATH
  21. CMD echo "success--------------ok"
  22. CMD /bin/bash

构建:在当前目录下执行

  1. docker build -t 新镜像名字:TAG .
  2. docker build -t centosjava8:1.5 . //注意最后面的这个 . 不能丢

注意:centos 不要是用最新版,不然会报错
如果拉取最新的 centos 8 会导致 yum 找不到对应版本的镜像库

当创建完成之后,查看当前的镜像
image.png

运行

  1. docker run -it 新镜像名字:TAG
  2. // 命令说明
  3. // 使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
  4. docker run -it imageId /bin/bash

实例使用

编写 Dockerfile

  1. FROM nginx
  2. COPY dist/ /usr/share/nginx/html/
  3. COPY nginx-docker/default.conf /etc/nginx/conf.d/default.conf
  • 自定义构建镜像的时候基于Dockerfile来构建。
  • FROM nginx 命令的意思该镜像是基于 nginx:latest 镜像而构建的。
  • COPY dist/ /usr/share/nginx/html/ 命令的意思是将项目根目录下dist文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下。
  • COPY nginx/default.conf /etc/nginx/conf.d/default.conf 命令的意思是将nginx-docker目录下的default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换nginx镜像里的默认配置。

在项目根目录下创建 nginx-docker 文件夹,该文件夹下新建文件 default.conf

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. #charset koi8-r;
  5. access_log /var/log/nginx/host.access.log main;
  6. error_log /var/log/nginx/error.log error;
  7. #location /api/ {
  8. # rewrite /api/(.*) /$1 break;
  9. # proxy_pass http://172.18.0.3:9728;
  10. #}
  11. location / {
  12. root /usr/share/nginx/html;
  13. index index.html index.htm;
  14. }
  15. #error_page 404 /404.html;
  16. # redirect server error pages to the static page /50x.html
  17. #
  18. error_page 500 502 503 504 /50x.html;
  19. location = /50x.html {
  20. root /usr/share/nginx/html;
  21. }
  22. }

目录结构:
image.png

基于该 Dockerfile构建镜像

  1. docker build -t dockervue . // -t 是给镜像命名 . 是基于当前目录的Dockerfile来构建镜像
  2. //注意:需要在当前目录下执行

创建容器

  1. docker run --name=dockervue5 -d -p 3005:80 -v /myDataVolume:/usr/share/nginx/html dockervue

进入某个容器中

进入这个镜像中查看当前的配置信息是怎样的?
并且进行修改

如何做目录映射呢 因为进入容器之中在修改文件还是比较复杂的!

运行报错
image.png

image.png

docker 报错
https://blog.csdn.net/dreamerrrrrr/article/details/108632723

docker: Error response from daemon: driver failed programming external connectivity on endpoint dockervue (39a1b295995e785a6f67d3e233b6224eca2e8df00ec8a1fafa06e2690aa0e9ef): (iptables failed: iptables —wait -t nat -A DOCKER -p tcp -d 0/0 —dport 3000 -j DNAT —to-destination 172.17.0.2:3000 ! -i docker0: iptables: No chain/target/match by that name.

docker启动报错 (iptables failed: iptables —wait -t nat -A DOCKER -p tcp -d 0/0 —dport
https://www.cnblogs.com/kala00k/p/11572929.html

docker 创建完容器就自动退出


常见问题

错误一:
WARNING: IPv4 forwarding is disabled. Networking will not work
image.png
执行

  1. systemctl restart docke

相关文章
https://juejin.cn/post/6844903962236157960

错误二
image.png
原因:centos 8 不兼容的问题