您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

Docker容器的三种创建运行方式,一个比一个好用

时间:2020-11-20 09:56:14  来源:  作者:

现在的项目部署运维中,使用Docker容器越来越多,Docker给我们提供创建容器的方式也有好几种,主要是docker run命令、Dockerfile文件、docker-compose三种方式,一个比一个方便。

我们来看下有几种方式的具体用法吧。本文需要先安装docker和docker-compose,不懂安装的可以看我的另外两篇文章centos7安装docker docker-compose安装 ,非常方便就可以安装好,

以创建一个Nginx容器为例。

方式一:docker run命令方式

docker run --name some-nginx -p 1080:80 -v /some/content:/usr/share/nginx/html -d nginx

参数说明:

--name:定义容器名。

-p:宿主机与容器的端口挂载,格式:宿主机端口:容器内部端口

-v:宿主机目录与容器内目录映射,格式:宿主机目录:容器内部目录

-d:后台执行

执行以上命令就可以啦,这里把容器名取名为some-nginx,把容器的80端口映射到宿主机的1080端口,容器内的/usr/share/nginx/html目录映射到宿主机的/some/content目录,使用的是nginx最新的镜像,镜像部分也可以写成 “nginx:版本”比如“nginx:1.15.1”。

在/some/content创建一个index.html,随便输入个内容。

访问下 ip+1080可以看到请求到nginx了。

Docker容器的三种创建运行方式,一个比一个好用

访问nginx测试

docker run方式在运行简单的容器方面还是比较方便的。

方式二:Dockerfile配置文件构建镜像方式

1.创建一个文件,命名为Dockerfile,输入以下内容。

FROM nginx
COPY html /usr/share/nginx/html

FROM nginx 代表以nginx镜像为基础构建我们的镜像。

注意需要先在Dockerfile同目录创建html目录,不然会报错。

Dockerfile文件内可以自定义镜像内容,有很多指令可以用,比如可以在配置容器创建后运行shell脚本等,可以自行查阅,本文仅做一个简单的用法示例入门。

注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层,所以尽量不要写太多层。

2.在Dockerfile同目录下运行命令创建镜像

docker build -t my-nginx-image .

注意最后面有一个点。

3.运行容器

docker run --name some-nginx -p 1080:80 -d my-nginx-image

在html目录里新建一个index.html文件随便输入个内容,访问下 ip+1080可以看到请求到nginx了。

Docker容器的三种创建运行方式,一个比一个好用

访问nginx测试

Dockerfile一般用于自定义镜像,因为是个文件,也比命令的方式更易于保存与团队间共享。

方式三:docker -compose方式

在需要管理多个容器时用以上两种方式都不太适合,不仅要管理每个容器的配置信息,还要处理容器间的关系,这时候就需要docker-compose来做容器编排了。

1.创建一个docker-compose.yml文件,输入以下内容

version: "3"
services:
  nginx:
    image: nginx
    container_name: some-nginx
    ports:
      - "1080:80"
    volumes:
      - /some/content:/usr/share/nginx/html

在/some/content创建一个index.html,随便输入个内容,等会访问测试。

2.执行启动命令

docker-compose up -d

访问下 ip+1080可以看到请求到nginx了。

Docker容器的三种创建运行方式,一个比一个好用

访问测试

docker-compose.yml文件里可以写多个容器配置信息,有提供各种配置项用于容器编排。

比如我有一个springboot项目,需要打包成jar包然后创建容器运行,需要连接一个数据库容器,最后需要一个nginx容器做请求代理。那么docker-compose.yml文件可以这样写。

version: "3"
services:
  MySQL:
    image: mysql:5.7.26
    ports:
      - "13306:3306"  
    restart: "always"
    container_name: mysql
    command:
      --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max_connections=1000 --default-storage-engine=INNODB --lower_case_table_names=1 --default-time_zone='+8:00'
      --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    privileged: true    
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - TZ="Asia/Shanghai"
    volumes:  
      - /opt/docker/mysql/conf:/etc/mysql/mysql.conf.d
      - /etc/localtime:/etc/localtime
      - /opt/docker/mysql/logs:/var/log/mysql
      - /opt/docker/mysql/data:/var/lib/mysql
  my-server:
    image: JAVA:8
    restart: "always"
    container_name: my-server
    environment:
      - TZ="Asia/Shanghai"
    volumes:  
      - /opt/my-serve/my-serve-0.0.1-SNAPSHOT.jar:/data/my-serve-0.0.1-SNAPSHOT.jar
      - /etc/localtime:/etc/localtime
      - /opt/var/logs:/var/logs
    entrypoint: java -jar /data/my-serve-0.0.1-SNAPSHOT.jar --server.port=18081
  nginx:
    image: nginx
    container_name: nginx
    volumes:
      - /opt/my-serve:/home/nginx
      - /opt/docker/nginx/conf.d/:/etc/nginx/conf.d/
      - /opt/docker/nginx/log/:/var/log/nginx/
      - /opt/docker/nginx/html/:/usr/share/nginx/html/
    restart: "always"
    network_mode: "host"

只要执行 docker-compose up -d 命令就可以把配置文件内的所有容器启动起来,是不是很方便呢。

在实际项目中,一般Dockerfile和docker-compose用得比较多,不过现在Kubernetes越来越火,以后可能Kubernetes也会占领市场也不一定。

好了本次内容就到这了。希望对你有所帮助。



Tags:Docker   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
现在的项目部署运维中,使用Docker容器越来越多,Docker给我们提供创建容器的方式也有好几种,主要是docker run命令、Dockerfile文件、docker-compose三种方式,一个比一个方便。我...【详细内容】
2020-11-20   Docker  点击:(0)  评论:(0)  加入收藏
你是否还在大量控制台窗口中监控容器,还是对使用终端命令充满热情?而使用Docker的图形用户界面(GUI)工具,则可以更简单的对容器进行管理,并提高效率。而且它们都是免费的。Portain...【详细内容】
2020-11-16   Docker  点击:(5)  评论:(0)  加入收藏
Docker基本命令更新软件包yum -y update安装Docker虚拟机 yum install -y docker运行、重启、关闭Docker虚拟机service docker startservice docker stop搜索镜像 docker se...【详细内容】
2020-11-12   Docker  点击:(4)  评论:(0)  加入收藏
Jenkins是一款开源的CI&CD软件, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。JenkinsJenkins基于Java环境,可以部署在windows/Mac OS/linux上,通过其网页...【详细内容】
2020-11-06   Docker  点击:(7)  评论:(0)  加入收藏
通过本篇文章我们可以了解到容器镜像结构、将主机数据挂载到容器的方式、容器数据卷及数据卷的备份与恢复等技术,下面我们就一起来学习吧!01 Docker存储概览默认情况下容器中...【详细内容】
2020-10-29   Docker  点击:(5)  评论:(0)  加入收藏
本篇文章我们将讲解跨主机网络的容器通信实现,涉及到Docker overlay网络与MacVlan网络的解决方案,下面我们就一起来学习吧!01 Docker跨主机网络通信跨主机的容器网络方案主要有...【详细内容】
2020-10-26   Docker  点击:(7)  评论:(0)  加入收藏
简介Redis Cluster是Redis官方的一个高可用分布式解决方案,其优点是高可用,缺点是不能保证数据强一致。在这里使用docker容器来搭建一套6节点(3主,3从)Redis-Cluster集群环境。环...【详细内容】
2020-10-22   Docker  点击:(7)  评论:(0)  加入收藏
如果我们想要构建和运行一个现代的云基础设施,那么理解Docker和Kubernetes是必不可少的。本文主要给大家介绍Docker和Kubernetes技术以及它们之间的区别和联系。一、Docker1....【详细内容】
2020-10-19   Docker  点击:(3)  评论:(0)  加入收藏
今天这篇文章我们主要来了解一下容器的一些基本用法。01 Docker的安装Docker目前主要有两个版本,社区版(Community Edition(CE))与企业版(Enterprise Edition(EE)),本章节我们主要...【详细内容】
2020-10-15   Docker  点击:(7)  评论:(0)  加入收藏
以下文章来源于转角遇到GitHub ,作者欧盆索思当前 Docker 的火热程度毋庸置疑。我们都知晓 Docker 的镜像是基于层的概念构建的。如何让镜像更小,一直是大家关注的,网上也有很...【详细内容】
2020-09-28   Docker  点击:(9)  评论:(0)  加入收藏
可以说,Docker是目前市面上比较流行的容器技术之一。本节我们将带领大家一起使用Docker来演示如何构建、运行、发布微服务。 Docker的安装原先,Docker只支持Linux环境下的安装...【详细内容】
2020-09-25   Docker  点击:(8)  评论:(0)  加入收藏
当Dockerfile超出合理范围时,会出现以下问题: 很难理解和维护-我们需要阅读数百行以了解所有依赖关系 在这么多行之间可能忽略一个明显的安全问题 当每个人都在更改同一文件...【详细内容】
2020-09-23   Docker  点击:(4)  评论:(0)  加入收藏
Docker下的disconf实战全文链接 https://blog.csdn.net/boling_cavalry/article/details/71082610; https://blog.csdn.net/boling_cavalry/article/details/71107498; https:...【详细内容】
2020-09-22   Docker  点击:(10)  评论:(0)  加入收藏
docker网络我们来探讨一个docker的network的问题。小伙伴们请看如下命令:docker run -d -p8080:8080 镜像ID-p8080:8080这个命令的意思就是将容器的8080端口映射到宿主机的80...【详细内容】
2020-09-18   Docker  点击:(4)  评论:(0)  加入收藏
对于开发人员来说,要学习很多的容器、缓存、消息中间件、数据库等。比如:tomcat,jboss,websphere,redis,mongoDB,mq,mysql等。但是在自己项目中不一定都会用到,为了学习,经常会在自己...【详细内容】
2020-09-10   Docker  点击:(13)  评论:(0)  加入收藏
Compose 简介    通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成...【详细内容】
2020-09-08   Docker  点击:(2)  评论:(0)  加入收藏
Docker-For-PentestDocker-For-Pentest是一个带有大量预配置工具的专为渗透测试人员设计的Docker镜像,该镜像中自带了大量常用的安全工具,并且能够帮助广大研究人员以最便捷...【详细内容】
2020-09-07   Docker  点击:(12)  评论:(0)  加入收藏
最近换了新电脑所以各种环境重新搞一遍,顺便做个记录,接下来是安装操作步骤:1.下载Elasticsearch:docker pull elasticsearch:7.6.22.下载kibana:docker pull kibana:7.6.2备注:...【详细内容】
2020-09-01   Docker  点击:(17)  评论:(0)  加入收藏
1、sudo yum install -y yum-utils device-mapper-persistent-data lvm2 注释:yum-utils 安装的工具包,主要是为了简化我们安装过程中设置安装源的配置过程device-mapper-pers...【详细内容】
2020-08-31   Docker  点击:(8)  评论:(0)  加入收藏
从前面的文章可知,当我们运行一个web项目时需要在一个容器上运行,而当我们运行一个容器时需要一个镜像,如果我们本地没有镜像,那么docker就会自动从镜像仓库中下载,默认是从docke...【详细内容】
2020-08-31   Docker  点击:(9)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条