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

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   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  Tags: Docker  点击:(10)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  Tags: Docker  点击:(10)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  Tags: Docker  点击:(47)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  Tags: Docker  点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  Tags: Docker  点击:(48)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  Tags: Docker  点击:(61)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  Tags: Docker  点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  Tags: Docker  点击:(167)  评论:(0)  加入收藏
环境要求 ubuntu系统:20.04 docker版本:20.10.7 redis版本:6.0.6步骤由于我这里已经有相应的redis镜像,这里就不记录了,关于docker一些基础知识可以看我以前的笔记开启3台re...【详细内容】
2021-07-26  Tags: Docker  点击:(117)  评论:(0)  加入收藏
今天在虚拟机里面安装了docker,利用docker起了一个centos。里面配置完成openssh后,利用xsheel连接docker里面的centos,发现特别慢,差不多要的1分钟才能连接上去。这肯定是有问题...【详细内容】
2021-07-21  Tags: Docker  点击:(131)  评论:(0)  加入收藏
▌简易百科推荐
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(10)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(10)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(47)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(33)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(61)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(167)  评论:(0)  加入收藏
环境要求 ubuntu系统:20.04 docker版本:20.10.7 redis版本:6.0.6步骤由于我这里已经有相应的redis镜像,这里就不记录了,关于docker一些基础知识可以看我以前的笔记开启3台re...【详细内容】
2021-07-26  石老师小跟班    Tags:Redis主从复制   点击:(117)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条