部署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镜像的文件
主要指令:
标签:容器,run,--,mysql,镜像,docker From: https://www.cnblogs.com/hardyzhou/p/16989392.htmlFROM: 构建镜像时用到的基础镜像
MAINTAINER: 镜像的构建者
RUN: 构建镜像时需要运行的命令
ADD: 给镜像中添加文件
WORKDIR: 镜像的工作目录
VOLUME: 挂载的目录
EXPOSE: 暴露的端口
CMD: 容器启动时需要运行的命令,只有最后一个生效,可被替代
ENTRYPOINT: 容器启动时需要运行的命运,可被追加
ONBUILD: 当构建一个被继承的dockerfile 这个时候就会运行ONBUILD。处罚指令
COPY: 与ADD类似,将文件拷贝到镜像中
ENV: 设置环境变量