文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-03 16:32

关注

[[353237]]

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

以创建一个Nginx容器为例。

方式一:docker run命令方式

 

  1. 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了。

 

 

访问nginx测试

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

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

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

 

  1. FROM nginx 
  2. COPY html /usr/share/nginx/html 

 

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

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

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

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

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

 

  1. docker build -t my-nginx-image . 

注意最后面有一个点。

3.运行容器

 

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

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

 

 

访问nginx测试

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

方式三:docker -compose方式

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

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

  1. version: "3" 
  2. services: 
  3.   nginx: 
  4.     image: nginx 
  5.     container_name: some-nginx 
  6.     ports: 
  7.       - "1080:80" 
  8.     volumes: 
  9.       - /some/content:/usr/share/nginx/html 

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

2.执行启动命令

 

  1. docker-compose up -d 

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

 

 

访问测试

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

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

 

  1. version: "3" 
  2. services: 
  3.   mysql: 
  4.     image: mysql:5.7.26 
  5.     ports: 
  6.       - "13306:3306"   
  7.     restart: "always" 
  8.     container_name: mysql 
  9.     command: 
  10.       --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' 
  11.       --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 
  12.     privileged: true     
  13.     environment: 
  14.       - MYSQL_ROOT_PASSWORD=123456 
  15.       - TZ="Asia/Shanghai" 
  16.     volumes:   
  17.       - /opt/docker/mysql/conf:/etc/mysql/mysql.conf.d 
  18.       - /etc/localtime:/etc/localtime 
  19.       - /opt/docker/mysql/logs:/var/log/mysql 
  20.       - /opt/docker/mysql/data:/var/lib/mysql 
  21.   my-server: 
  22.     image: java:8 
  23.     restart: "always" 
  24.     container_name: my-server 
  25.     environment: 
  26.       - TZ="Asia/Shanghai" 
  27.     volumes:   
  28.       - /opt/my-serve/my-serve-0.0.1-SNAPSHOT.jar:/data/my-serve-0.0.1-SNAPSHOT.jar 
  29.       - /etc/localtime:/etc/localtime 
  30.       - /opt/var/logs:/var/logs 
  31.     entrypoint: java -jar /data/my-serve-0.0.1-SNAPSHOT.jar --server.port=18081 
  32.   nginx: 
  33.     image: nginx 
  34.     container_name: nginx 
  35.     volumes: 
  36.       - /opt/my-serve:/home/nginx 
  37.       - /opt/docker/nginx/conf.d/:/etc/nginx/conf.d/ 
  38.       - /opt/docker/nginx/log/:/var/log/nginx/ 
  39.       - /opt/docker/nginx/html/:/usr/share/nginx/html/ 
  40.     restart: "always" 
  41.     network_mode: "host" 

 

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

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

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

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯