安装
- 卸载旧版
bash
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
配置Docker的yum库
安装yum工具
yum install -y yum-utils
配置yum的docker源yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动和校验
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机自启
systemctl enable docker
# Docker容器开机自启
docker update --restart=always [容器名/容器id]
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
一键安装启动mysql
docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123 mysql
常见命令
命令 | 说明 |
---|---|
docker pull | 拉取镜像 |
docker push | 推送镜像 |
docker images | 查看本地镜像 |
docker rmi | 删除本地镜像 |
docker run | 创建并运行容器(名称不能重复) |
docker stop | 停止容器 |
docker start | 启动容器 |
docker restart | 重启容器 |
docker rm | 删除容器 (-f 强制删除) |
docker ps | 查看容器 |
docker logs -f | 查看容器运行日志(-f 实时查看) |
docker exec -it | 进入容器 |
docker save | 保持镜像到本地 |
docker load | 加载本地压缩文件到镜像 |
docker inspect | 查看容器详情 |
常用命令的关系
数据卷
是一个虚拟目录。他将宿主机目录映射到容易内目录,方便我们操作容器内的文件,或者方便迁移容器产生的数据。挂载后目录是同步的。
一键安装启动mysql 增加挂载本地目录
docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 -v ./mysql/data:/var/lib/mysql -v ./mysql/conf:/etc/mysql/conf.d -v ./mysql/init:/docker-entrypoint-initdb.d mysql
Dockerfile 记录镜像解构的文件
指令 | 说明 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM centos:6 |
ENV | 设置环境变量,可在后面指令使用 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./xx.jar /tmp/app.jar |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
DockerCompose
yml
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- shortLink-net
shortLink:
build:
context: .
dockerfile: Dockerfile
container_name: shortLink
ports:
- "7001:7001"
networks:
- shortLink-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "3001:3001"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- shortLink
networks:
- shortLink-net
networks:
shortLink-net:
name: shortLink