部署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 随机映射主机端口
部署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
方式二:具名挂载和匿名挂载
匿名挂载
-v : 直接加容器路径
> docker run -d -P --name nginx01 -v /ect/nginx nginx
具名挂载
> docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
查看volume的使用情况
> docker volume -- help
方式三:使用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 # 使用自己的镜像生产容器
进入容器中可以发现该容器直接挂在了两个volume
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
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) # 删除所有镜像