docker总结
  ssGPNGBVZK0u 2023年11月02日 22 0

docker总结

容器

  • 把需要启动的进程,以及进程所依赖的环境(库文件)封装在一起,运行到容器中。

容器技术

  • 容器比虚拟机更轻量级,占有的资源比虚拟机更少。(容器没有操作系统)
  • 实现应用和部署的敏捷性。(容器秒级启动)
  • 为了符合当下和未来开发的架构理念(微服务架构)。
  • 一次编译可以在所有环境运行。

docker

Docker 的核心组件包括: Docker 客户端:Client Docker 服务器:Docker daemon Docker 镜像:Image Registry:镜像仓库 Docker 容器:Container

  • (Docker从1.13.x版本开始,版本分为企业版EE和社区版CE)
  • Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 Docker daemon是服务器组件,以Linux后台服务的方式运行,Docker daemon运行在Docker host上,负责创建、运行、监控容器,构建、存储镜像。
  • Registry Harbor镜像仓库

docker镜像

docker commit

Dockerfile

  • FROM (构建指令) 指定基础image为该image的最后修改的版本(latest)。 或者: FROM : 镜像仓库:192.168.70.105:5000/ubuntu:v1
  • MAINTAINER (构建指令)
    格式:MAINTAINER
    设置镜像的作者,可以是任意字符串。
  • COPY (构建指令)
  • ADD (构建指令)
  • ENV (构建指令) 设置环境变量,环境变量可被后面的指令使用,并在容器运行时保持。
  • l ARG 构建参数
    格式: ARG <参数名>[=<默认值>]
  • ARG构建参数和 ENV 的效果一样,都是设置变量。所不同的是, ARG 所设置的构建环境的变量,在将来容器运行时是不会存在这些变量的。
  • EXPOSE (设置指令)
  • VOLUME (设置指令)
  • WORKDIR (设置指令)
    格式:WORKDIR /path/to/workdir
  • RUN (构建指令) 在构建镜像过程中要指定执行的命令。
  • CMD (设置指令) 容器启动时运行指定的命令。
  • ENTRYPOINT (设置指令)

设置容器启动时运行的命令。

  • USER
  • HEALTHCHECK 容器健康状况检查命令
  • l LABEL
    给镜像添加信息。使用docker inspect可查看镜像的相关信息

docker 部署centos+tomcat


//构建centom+tomcat镜像
[root@docker01 ~]# mkdir tomcat
[root@docker01 ~]# cd tomcat/
[root@docker01 tomcat]# docker images
REPOSITORY                            TAG              IMAGE ID       CREATED         SIZE
centos7.5_ssh_apache2.4_supervisord   latest           a82dadb57dea   45 hours ago    698MB
nginx                                 latest           f9c14fe76d50   6 days ago      143MB
httpd                                 latest           d1676199e605   8 days ago      145MB
busybox                               latest           8135583d97fe   11 days ago     4.86MB
centos                                centos7.9.2009   eeb6ee3f44bd   20 months ago   204MB
[root@docker01 tomcat]# vi dockerfile
[root@docker01 tomcat]# cat dockerfile
FROM centos:centos7.9.2009
ADD jdk-8u171-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_171
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH $JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
RUN export PATH JAVA_HOME CLASSPATH
ADD apache-tomcat-8.5.42.tar.gz /usr/local/
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.42/bin/catalina.sh run
[root@docker01 ~]# ls
anaconda-ks.cfg                  flannel-v0.10.0-linux-amd64.tar.gz  ngx_cache_purge-2.3.tar.gz
apache-tomcat-8.5.42.tar.gz      hostfile                            README.md
etcd-v3.3.11-linux-amd64.tar.gz  jdk-8u171-linux-x64.tar.gz          tomcat
flanneld                         mk-docker-opts.sh
[root@docker01 ~]# mv apache-tomcat-8.5.42.tar.gz jdk-8u171-linux-x64.tar.gz tomcat/
[root@docker01 ~]# cd tomcat/
[root@docker01 tomcat]# ls
apache-tomcat-8.5.42.tar.gz  dockerfile  jdk-8u171-linux-x64.tar.gz
[root@docker01 tomcat]# docker build -t centos_tomcat:8.5.42 .
[root@docker01 tomcat]# docker images
REPOSITORY                            TAG              IMAGE ID       CREATED              SIZE
centos_tomcat                         8.5.42           07afb0d33884   About a minute ago   605MB
centos7.5_ssh_apache2.4_supervisord   latest           a82dadb57dea   45 hours ago         698MB
nginx                                 latest           f9c14fe76d50   6 days ago           143MB
httpd                                 latest           d1676199e605   8 days ago           145MB
busybox                               latest           8135583d97fe   11 days ago          4.86MB
centos                                centos7.9.2009   eeb6ee3f44bd   20 months ago        204MB
[root@docker01 tomcat]# docker history centos_tomcat:8.5.42
IMAGE          CREATED              CREATED BY                                      SIZE      COMMENT
07afb0d33884   About a minute ago   CMD ["catalina" "run"]                          0B        buildkit.dockerfile.v0
<missing>      About a minute ago   EXPOSE map[8080/tcp:{}]                         0B        buildkit.dockerfile.v0
<missing>      About a minute ago   ADD apache-tomcat-8.5.42.tar.gz /usr/local/ …   13.9MB    buildkit.dockerfile.v0
<missing>      About a minute ago   RUN /bin/sh -c export PATH JAVA_HOME CLASSPA…   0B        buildkit.dockerfile.v0
<missing>      About a minute agENV CLASSPATH=/usr/local/jdk1.8.0_171/jre/li…   0B        buildkit.dockerfile.v0
<missing>      About a minute ago   ENV PATH=/usr/local/jdk1.8.0_171/bin:/usr/lo…   0B        buildkit.dockerfile.v0
<missing>      About a minute ago   ENV JAVA_HOME=/usr/local/jdk1.8.0_171           0B        buildkit.dockerfile.v0
<missing>      About a minute ago   ADD jdk-8u171-linux-x64.tar.gz /usr/local/ #…   387MB     buildkit.dockerfile.v0
<missing>      20 months ago        /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>      20 months ago        /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      20 months ago        /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4…   204MB
//运行容器
[root@docker01 tomcat]# docker run -it  --rm centos_tomcat:8.5.42
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.42
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.42
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.42/temp
[root@docker01 tomcat]# docker run -d --name  tomcat_web01 --restart always -p 8080:8080 centos_tomcat:8.5.42
f30131c77dc3e78baec2889d6f59e36cd87afe786b3c849e0634d18c0aed13b8
[root@docker01 tomcat]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                       NAMES
f30131c77dc3   centos_tomcat:8.5.42   "/bin/sh -c '/usr/lo…"   12 seconds ago   Up 11 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat_web01
[root@docker01 tomcat]# curl 192.168.70.106:8080


//进入容器
[root@docker01 tomcat]# docker attach tomcat_web01
[root@docker01 tomcat]# docker ps        //catalina.sh 被停掉,所以没有运行
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker01 tomcat]# docker start tomcat_web01
tomcat_web01
[root@docker01 tomcat]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS          PORTS                                       NAMES
f30131c77dc3   centos_tomcat:8.5.42   "/bin/sh -c '/usr/lo…"   7 minutes ago   Up 11 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat_web01
[root@docker01 tomcat]# docker logs tomcat_web01	//查看启动时终端输出信息
# docker exec  //进入容器执行命令

挂载卷

//bind mount
[root@docker01 ~]# mkdir /usr/local/tomcat
[root@docker01 ~]# cat tomcat/dockerfile
FROM centos:centos7.9.2009
ADD jdk-8u171-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_171
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH $JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
RUN export PATH JAVA_HOME CLASSPATH
ADD apache-tomcat-8.5.42.tar.gz /usr/local/
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.42/bin/catalina.sh run
[root@docker01 ~]# docker run -d --name tomcat_web01 --restart always -p 8080:8080 -v /usr/local/tomcat/:/usr/local/apache-tomcat-8.5.42 centos_tomcat:8              .5.42
docker: Error response from daemon: Conflict. The container name "/tomcat_web01" is already in use by container "f30131c77dc3e78baec2889d6f59e36cd87afe7              86b3c849e0634d18c0aed13b8". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
[root@docker01 ~]# docker run -d --name tomcat_web02 --restart always -p 8081:8080 -v /usr/local/tomcat/:/usr/local/apache-tomcat-8.5.42 centos_tomcat:8              .5.42
fb1da3b9952bd57b9140e77c104eae151ae5b5d164d91ad3ae0ddd3dc3a0e424
[root@docker01 ~]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                           PORTS                                                     NAMES
fb1da3b9952b   centos_tomcat:8.5.42   "/bin/sh -c '/usr/lo…"   20 seconds ago   Restarting (127) 5 seconds ago                                                             tomcat_web02
[root@docker01 ~]# docker rm -f tomcat_web02
tomcat_web02
[root@docker01 ~]# ls
anaconda-ks.cfg              etcd-v3.3.11-linux-amd64.tar.gz  flannel-v0.10.0-linux-amd64.tar.gz  mk-docker-opts.sh           README.md
apache-tomcat-8.5.42.tar.gz  flanneld                         hostfile                            ngx_cache_purge-2.3.tar.gz  tomcat
[root@docker01 ~]# ls /usr/local/tomcat
[root@docker01 ~]# tar zxf apache-tomcat-8.5.42.tar.gz -C /usr/local/
[root@docker01 ~]# cd /usr/local/
[root@docker01 local]# ls
apache-tomcat-8.5.42  bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat
[root@docker01 ~]# docker run -d --name tomcat_web05 --restart always -p 8085:8080 -v /usr/local/tomcat/apache-tomcat-8.5.42:/usr/local/apache-tomcat-8.5.42 centos_tomcat:8.5.42
938a0c79b79258f5674f5f3fae2b2f3c3936bf85e7cfac850d285f44572910f6
[root@docker01 ~]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED             STATUS                            PORTS                                       NAMES
938a0c79b792   centos_tomcat:8.5.42   "/bin/sh -c '/usr/lo…"   7 seconds ago       Up 6 seconds                      0.0.0.0:8085->8080/tcp, :::8085->8080/tcp   tomcat_web05

//docker volume
[root@docker01 ~]# docker volume create tomcat_data
tomcat_data
[root@docker01 ~]# ls /var/lib/docker/volumes/tomcat_data/
_data
[root@docker01 ~]# ls /var/lib/docker/volumes/tomcat_data/_data/
[root@docker01 ~]# docker volume inspect tomcat_data
[
    {
        "CreatedAt": "2023-06-01T18:29:19+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/tomcat_data/_data",
        "Name": "tomcat_data",
        "Options": null,
        "Scope": "local"
    }
]
[root@docker01 ~]# docker run -d --name tomcat_web02 --restart always -p 8081:8080 -v tomcat_data:/usr/local/apache-tomcat-8.5.42 centos_tomcat:8.5.42  de3be22271e43d302f1a2036b0f61f9b9589d43583eb6958b847b4cc8ca6c711
[root@docker01 ~]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS         PORTS                                       NAMES
de3be22271e4   centos_tomcat:8.5.42   "/bin/sh -c '/usr/lo…"   10 seconds ago   Up 9 seconds   0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   tomcat_web02
f30131c77dc3   centos_tomcat:8.5.42   "/bin/sh -c '/usr/lo…"   20 hours ago     Up 2 hours     0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat_web01
[root@docker01 ~]# ls /var/lib/docker/volumes/tomcat_data/_data/
bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

docker 网络


  • single-host 单宿主机的网络
  • multi-host 多宿主机的网络(原生网络)
  • multi-host 第三方的网络
  • joined container 后创建的容器网络共用之前创建容器的网络
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Kubernetes 下一篇: 跨主机容器间通信网络
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   30   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   31   0   0 Docker
  DnoStTHsc0vp   2023年12月11日   24   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   99   0   0 Dockercentosbash