1. 创建一个docker compose配置,包含两个容器。一个Nginx,一个Mysql。
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: my-nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html
restart: unless-stopped
depends_on:
- mysql
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 10s
timeout: 5s
retries: 3
mysql:
image: mysql:8.0
container_name: my-mysql
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: exampledb
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpass
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-prootpass"]
interval: 10s
timeout: 5s
retries: 5
volumes:
mysql_data:
2. 在docker compose的yml文件中配置上面两个容器,使其可以通过主机名互相访问。
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: my-nginx
hostname: nginx-host
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html
restart: unless-stopped
depends_on:
- mysql
networks:
- app-network
mysql:
image: mysql:8.0
container_name: my-mysql
hostname: mysql-host
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: exampledb
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpass
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
restart: unless-stopped
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
mysql_data:
3. 如果一个项目中,有前端、后端、数据库,你认为启动顺序应该是什么样的。
先启动数据库,然后是后端,最后是前端。
4. dockercompose中可以保障服务启动的先后顺序吗?可以保障某服务启动后再启动另一个服务吗
可以使用以下方法:
5. docker compose如何设置开机自动启动,比如设置之前的Harbor仓库可以开机自动启动。
在/etc/systemd/system/harbor.service中
写入:
[Unit]
Description=Harbor Container Registry
After=docker.service
Requires=docker.service
[Service]
Type=simple
Restart=always
WorkingDirectory=/opt/harbor # 替换为你实际存放 harbor-compose 文件的目录
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
[Install]
WantedBy=multi-user.target重新加载systemd
sudo systemctl daemon-reload设置服务开机自启
sudo systemctl enable harbor
6. Dockerfile那么多内容,主要是在干啥呢?请归纳为4个关键步骤/事项
Dockerfile = 指定基础镜像 + 构建运行环境 + 配置启动方式 + 安全优化
7. 如何查看每个docker容器的资源使用情况
可以通过以下方式查看
8. 如何通过docker镜像获取到其Dockerfile
可以通过以下方法:
9. docker inspect的作用是什么,里面有哪些关键信息
docker inspect 是 Docker 提供的一个命令,用于查看容器、镜像、网络或数据卷的详细配置和运行状态信息。它提供了关于 Docker 对象的全面元数据,帮助开发者和运维人员调试、监控和理解容器化应用的行为。