部署Nginx

> systemctl start docker # 启动docker
> docker pull nginx # 拉去nginx镜像
> docker run -d --name mynginx -p 3344:80 nginx # 启动一个nginx容器
		# -d 后台运行
		# --name 给容器命名
		# -p 端口映射,本地端口:容器端口
		# -P 随机映射主机端口
> docker exec -it mynginx /bin/bash # 进入一个容器
> docker run -d -P -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
		# -P 随机映射主机端口

image

部署Tomcat

> docker run -it --name mytomcat -p 3355:8080 tomcat:9.0.70-jdk8-corretto-al2 # 以前台的方式启动容器
> docker run -it -d --name mytomcat -p 3355:8080 tomcat:9.0.70-jdk8-corretto-al2 # 以后台的方式启动容器
> docker exec -it mytomcat /bin/bash # 进入容器
# 进入容器后发现webapps是空的。可以把webapp.dist中的ROOT文件移动到webapps中

部署 ES+Kibana

> docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
	 -e 环境变量的修改
> [root@192 ~]# curl localhost:9200              # 访问测试
{
  "name" : "5153f5025634",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "LTpDhgZDRP-ZyLecb15cRw",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

> docker stats # 查看内存使用情况

> docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
	# 增加-e ES_JAVA_OPTS限制使用的内存

docker 可视化工具

> docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

docker commit

# docker commit 提交容器提交容器成为一个新的镜像
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[tag]

> docker commit -m="mytomcat" -a="hardy" cd92399918fc testtomcat:1.0 # 提交自己的镜像

> [root@192 ~]# docker images
REPOSITORY                      TAG                        IMAGE ID            CREATED                  SIZE
docker.io/tomcat                9.0.70-jdk8-corretto-al2   616d03c63d58        Less than a second ago   379 MB
testtomcat                      1.0                        77f674d8db04        54 seconds ago           379 MB

>  docker run -d -p 3669:8080 77f674d8db04 # 使用自己的镜像

docker 数据集【Volumes】

容器之间的数据共享,docker中的数据同步到本地

方式一:使用 -v 命令来挂载

-v 主机目录:容器内部目录

> docker run -it -v /home/ceshi:/home centos /bin/bash

> docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql # 配置MySQL

image

方式二:具名挂载和匿名挂载

匿名挂载
-v : 直接加容器路径
> docker run -d -P --name nginx01 -v /ect/nginx nginx

image

具名挂载

> docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

image

查看volume的使用情况

> docker volume -- help

Docker 的简单使用-小白菜博客
image

方式三:使用Dockfile

写一个dockerfile1

FROM centos
VOLUME ["volume01", "volume02"]

CMD echo "--------end------"
CMD /bin/bash

指令:

> docker build -f dockerfile1 -t hardy-centos . # 编译成一个镜像
		# -f 指定使用的dockerfile的路径。当在当前路径下,且文件名为默认的Dockerfile的时候,可以省略
		# -t target,生成目标,后面接镜像名:tag

> docker run -d hardy-centos # 使用自己的镜像生产容器

Docker 的简单使用-小白菜博客
进入容器中可以发现该容器直接挂在了两个volume
image

Dockerfile

用来构建docker镜像的文件
主要指令:

FROM: 构建镜像时用到的基础镜像
MAINTAINER: 镜像的构建者
RUN: 构建镜像时需要运行的命令
ADD: 给镜像中添加文件
WORKDIR: 镜像的工作目录
VOLUME: 挂载的目录
EXPOSE: 暴露的端口
CMD: 容器启动时需要运行的命令,只有最后一个生效,可被替代
ENTRYPOINT: 容器启动时需要运行的命运,可被追加
ONBUILD: 当构建一个被继承的dockerfile 这个时候就会运行ONBUILD。处罚指令
COPY: 与ADD类似,将文件拷贝到镜像中
ENV: 设置环境变量

ADD 和 COPY的区别

FROM openjdk:14

COPY jdk-14.0.2_linux-x64_bin.tar.gz /usr/testcopy/
COPY demo3.zip /usr/testcopy/
COPY demo4/    /usr/testcopy/

ADD jdk-14.0.2_linux-x64_bin.tar.gz /usr/testadd/
ADD demo3.zip /usr/testadd/
ADD demo4/    /usr/testadd/

CMD ls

image

bash-4.4# ls
bin  games  include  java  lib  lib64  libexec  local  sbin  share  src  testadd  testcopy  tmp
bash-4.4# cd testadd/
bash-4.4# ls
Dockerfile  HELP.md  demo3.iml  demo3.zip  jdk-14.0.2  mvnw  mvnw.cmd  pom.xml  src  target
bash-4.4# ls ../testcopy/
Dockerfile  HELP.md  demo3.iml  demo3.zip  jdk-14.0.2_linux-x64_bin.tar.gz  mvnw  mvnw.cmd  pom.xml  src  target

使用dockerfile编写自己的centos

FROM centos:7
MAINTAINER hardy@githup.com

ENV MyPath /usr/local
WORKDIR $MyPath

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80
RUN echo $MyPath
RUN echo "----end-----"
CMD /bin/bash

这个镜像自带vim和ifconfig

使用dockerfile发布tomcat

FROM centos
MAINTAINER hardy<hardy.zhou@githup.com>

COPY readme.md /usr/local/readme.md

ADD jdk-8u202-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-10.0.27.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_202
ENV CLASS_PATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME $MYPATH/apache-tomcat-10.0.27
ENV CATALINA_BASE $MYPATH/apache-tomcat-10.0.27
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASE/bin

EXPOSE 8080
CMD $CATALINA_HOME/bin/startup.sh && tail -F $CATALINA_HOME/bin/logs/catalina.out

使用dockerfile发布springboot

FROM java:8
COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

docker rm -f $(docker ps -qa) # 删除所有容器
docker rmi -f $(docker images -qa) # 删除所有镜像