Docker 学习笔记 - Docker Compose

网友投稿 230 2022-10-27

Docker 学习笔记 - Docker Compose

前面我们学习docker容器的时候,都是通过容器的相关命令来手动配置的,如果不同的容器之间有依赖关系,我们一般是通过-link的参数来指定,比如我们先启动一个mysql的容器,然后手动启动一个wordpress的容器,启动的时候 wordpress 的容器通过 -link 来给 mysql起一个别名,wordpress容器内部会自动更新host的记录,然后这个wordpress 容器就可以根据这个别名来访问mysql了。

如果我们存在大量的容器,彼此又有这种依赖关系,手动启动会比较麻烦,一个简单的方式是使用 docker composer。我们可以定义一个yaml的文件,定义容器的各种属性和依赖关系,然后通过docker composer指令执行就可以了,这个和ansible或者Cloudformation的工作方式大同小异。

下面看看如何实现。

首先是安装 docker composer

dnf install curl -y curl -L "-s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version

安装完成之后,我们需要自己配置一个docker-composer.yml 文件

[root@ip-172-16-1-150 my_wordpress]# cat docker-compose.yml version: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - web_data:/var/www/html ports: - 80:80 restart: always environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data: web_data: [root@ip-172-16-1-150 my_wordpress]#

然后执行

[root@ip-172-16-1-150 my_wordpress]# docker-compose up -d Creating network "my_wordpress_default" with the default driver Creating volume "my_wordpress_db_data" with default driver Creating volume "my_wordpress_web_data" with default driver Pulling db (mysql:5.7)... 5.7: Pulling from library/mysql d121f8d1c412: Already exists f3cebc0b4691: Pull complete 1862755a0b37: Pull complete 489b44f3dbb4: Pull complete 690874f836db: Pull complete baa8be383ffb: Pull complete 55356608b4ac: Pull complete 277d8f888368: Pull complete 21f2da6feb67: Pull complete 2c98f818bcb9: Pull complete 031b0a770162: Pull complete Digest: sha256:14fd47ec8724954b63d1a236d2299b8da25c9bbb8eacc739bb88038d82da4919 Status: Downloaded newer image for mysql:5.7 Pulling wordpress (wordpress:latest)... latest: Pulling from library/wordpress d121f8d1c412: Already exists 58b3577b786a: Pull complete 60538287851f: Pull complete c53ff72fe225: Pull complete 79b018c8773f: Pull complete fbe3e00ac4b0: Pull complete ff35226e1df8: Pull complete 44b1f6e41a8d: Pull complete 4b7d350c6421: Pull complete d172bb0f6fd8: Pull complete 8e3a7518dfbe: Pull complete 5b5c2f48d88d: Pull complete 4041d1fa2604: Pull complete 6dd5cf93d72b: Pull complete ccf416b51d48: Pull complete 01e250de76af: Pull complete 5e11e0781210: Pull complete 90263c2f8f85: Pull complete ec51f1f82182: Pull complete 114dbdd92298: Pull complete Digest: sha256:dd642d1d8bfb78458f334b1bf0372556f7e791af656d34df4114fab920b93c98 Status: Downloaded newer image for wordpress:latest Creating my_wordpress_db_1 ... done Creating my_wordpress_wordpress_1 ... done [root@ip-172-16-1-150 my_wordpress]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 79599efbcc1d wordpress:latest "docker-entrypoint.s…" 40 minutes ago Up 40 minutes 0.0.0.0:80->80/tcp my_wordpress_wordpress_1 51d4cb7ea4b3 mysql:5.7 "docker-entrypoint.s…" 40 minutes ago Up 40 minutes 3306/tcp, 33060/tcp my_wordpress_db_1

30秒之后就可以打开我们的wordpress 界面了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:spring中IOC控制反转依赖注入和new对象的区别说明
下一篇:总线、接口以及协议之间的关系
相关文章

 发表评论

暂时没有评论,来抢沙发吧~