您现在的位置是:亿华云 > 应用开发
Docker容器的三种创建运行方式,一个比一个好用
亿华云2025-10-03 20:30:49【应用开发】8人已围观
简介现在的项目部署运维中,使用Docker容器越来越多,Docker给我们提供创建容器的方式也有好几种,主要是docker run命令、Dockerfile文件、docker-compose三种方式,一个
现在的容器项目部署运维中,使用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了。

访问nginx测试
docker run方式在运行简单的容器方面还是比较方便的。
方式二:Dockerfile配置文件构建镜像方式
1.创建一个文件,命名为Dockerfile,输入以下内容。
FROM nginx COPY html /usr/share/nginx/htmlFROM 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了。

访问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-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也会占领市场也不一定。
好了本次内容就到这了。希望对你有所帮助。云服务器提供商
很赞哦!(55568)
相关文章
- 5、使用企业名称的英文名称作为域名也是国内许多企业选择域名的一种方式,特别适合一些与计算机、网络和通信相关的行业。
- 省级农信数据中心建设趋势与无损技术创新应用
- 数据中心变电站:从头开始设计
- 5G 意味着数据中心平台必须发展
- 域名不仅仅是一个简单的网站。对于有长远眼光的公司来说,在运营网站之前确定一个优秀的域名对有长远眼光的公司来说是非常重要的。这对今后的市场营销、产品营销和企业品牌建设都具有十分重要的意义。优秀的域名是企业在市场竞争中获得持久优势的利器。
- VPN的消亡史:是谁在“炒作”零信任?
- 戴尔PowerScale可大幅提升智能驾驶研发效率
- 全国都在拿算力说事,却只有头部数据中心才想得到这些问题
- 付款完成后,您只需耐心等待,如果您注册成功,系统会提示您。这里需要注意的是,域名是一个即时产品,只有在最终付款成功时才能预订,注册成功后不能更改。
- 网络虚拟化和SDN在数据中心中的作用