容器是一个进程,这个进程与机器上的其他进程进行了隔离。对于linux来说,隔离技术使用的是namespace和cgroup。
镜像包含容器的文件系统,所以镜像中必须有运行应用所需的依赖。
停止容器: docker stop xxx
删除容器: docker rm xxx
如果容器还在运行,可以强制删除容器: docker rm -f xxx
创建镜像: `docker build -t 镜像名称 .`
创建命名卷: docker volume create xx
使用命名卷: docker run -d -v xxx:/etc/app image-id
日志:
docker logs -f xxx:类似于tail -f
docker logs --since 3m xxx: 最近3分钟的日志
docker logs -n 10 xxx: 最近10条日志
如果两个容器使用的是同一个网络,他们之间可以通信。
docker network create xxx
docker run --network xxx --network-alias hostname yyy
可以通过docker的-e参数传递环境变量
docker-compose.yml样例:
version: "3.7"
services:
app:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
docker-compose up -d:启动应用栈。
docker-compose logs -f: 查看日志,后续可以跟指定的应用名。
docker-compose down:关闭应用栈。
应用的名称默认就是该应用的网络名称。
docker-compose默认为应用栈创建一个网络。
运行镜像 docker run xxx,如果本地不存在xxx镜像,则自动从docker hub中下载。
docker exec xxx 在运行中的容器中执行命令
删除镜像 docker rmi xxx,删除本地系统中的xxx镜像。
docker ps 查看运行中的容器。
docker ps -a 查看所有容器,包含未运行的容器。
docker top xxxxxxxx,查看容器中的最顶层进程。
docker stop ContainerID,停止容器
docker rm ContainerID,删除容器
docker pause ContainerID,暂停容器
docker unpause ContainerID,停止暂停容器