# 安装docker-compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#将可执行权限应用于二进制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
# 创建软链:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 测试是否安装成功:
$ docker-compose version
sudo apt install docker.io
docker --version
sudo groupadd docker
sudo usermod -aG docker $USER
sudo systemctl start docker
sudo systemctl stop docker
sudo systemctl restart docker
sudo systemctl status docker
sudo systemctl enable docker # 随系统启动
/etc/docker/daemon.json # 配置仓库镜像,dockerhub.io经常访问不到
docker pull ubuntu:18.04
docker images
docker search ubuntu
# 构建镜像
docker build -t galepai/web-flask:1.0 . -f dockfile
# 不使用缓存构建
docker build -t galepai/web-flask:1.0 . -f dockfile --no-cache
# 运行镜像,主机80端口映射镜像8000端口
docker run -p 80:8000 galepai/web-flask:1.0
# 运行镜像,共享主机网络,共用端口
docker run --network=host galepai/web-flask:1.0
# 后台运行
docker run -d -p 80:8000 galepai/web-flask:1.0
# -v 宿主机目录:容器目录(容器里原先不存在的路径目录)
docker run --name containername -p 80:8099 -v /home/docker:/data/django-project/Watch/logs galepai/watch:1.0
# 进入镜像,
docker run -ti containername<id> bash
docker cp nginx:/etc/nginx/nginx.conf ./ # 复制镜像或者容器里的文件到当前目录下
docker cp nginx:/etc/nginx/conf.d/default.conf ./conf/ # 复制镜像或者容器里的文件到当前目录conf下
# 查看容器
docker ps # 显示运行的容器
docker ps -a # 显示所有未删除的容易(包含运行和退出)
docker ps -aq # 只显示id
# 容器启动、重新启动 、停止
docker start containername<id> # 后台
docker attach containername<id> # 转到前台,ctrl+d, 停止容器
docker start -a containername<id> # 前台,ctrl+d, 不会停止容器
docker restart containername<id>
docker exec -it containername<id> /bin/bash # 进入容器的shell,exit退出
docker stop $(docker ps -aq)
docker logs -f containername<id> # 实时查看后台日志
# 删除容器
docker rm c87
# 删除所有容器
docker rm $(docker ps -aq)
# 删除镜像
docker rmi ubuntu:22.04<id>
# 删除<none>镜像,需提前清除冲突的容器
docker image prune
# 保存镜像
docker save -o my_image.tar my_image:tag
# 加载镜像
docker load -i my_image.tar
# dockerfile 示例
FROM galepai/web-django:1.0
LABEL MAINTAINER=galepai@163.com
# cv2 need
RUN apt install libgl1-mesa-glx -y
# 时区配置文件,asia/shanghai, tzdata的配置文件
COPY localtime /etc/
RUN apt install tzdata -y
# 复制工程文件
ENV PROJECT_DIR=/data/django-project/Watch
RUN mkdir -p $PROJECT_DIR
COPY Watch $PROJECT_DIR
WORKDIR $PROJECT_DIR
CMD ["python3","manage.py","runserver","0.0.0.0:8000","--noreload"]
# 国内可用镜像仓库地址,https://docker.m.daocloud.io,可以直接拉 docker pull m.daocloud.io/docker.io/library/nginx
# /etc/docker/docker.daemon
{
"registry-mirrors": [
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io",
"https://docker.unsee.tech",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn",
"https://docker.chenby.cn",
"http://mirror.azure.cn",
"https://dockerpull.org",
"https://dockerhub.icu",
"https://hub.rat.dev"
]
}
- ```yaml
## docker-compose.yml目录下必须要有这个配置文件
version: "3.8"
services:
web:
image: nginx:latest
container_name: nginx_service
ports:
- 8080:80
volumes:
- e:\VM\docker\nginx\front\nginx.conf:/etc/nginx/nginx.conf
- e:\VM\docker\nginx\front\html:/usr/share/nginx/html
- e:\VM\docker\nginx\front\logs:/var/log/nginx
- e:\VM\docker\nginx\front\conf:/etc/nginx/conf.d
networks:
- host1-network
depends_on:
- webrtc-streamer
webrtc-streamer:
image: mpromonet/webrtc-streamer
container_name: webrtc
ports:
- 8000:8000
command: -o
restart: always
networks:
host1-network:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.11.0/24
gateway: 192.168.11.254
```bash
# 对应xml文件的目录里,执行后台执行
docker compose up -d
docker compose stop
docker compose down
docker compose restart