Docker命令的基本使用
在不知道命令时,也可以使用--help使控制台给出提示
镜像操作命令
docker build -t 自定义镜像名:自定义版本号 Dockerfile所在的目录 ——利用Dockerfile创建镜像
创建一个名为Dockerfile的文件,写入构建镜像所需要的指令Docker Dockerfile
# 指定基础镜像,这是一个会自动配置jdk8环境的镜像
FROM java:8-alpine
# 拷贝java项目的包
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
# 常用的还有
# ENV JAVA_DIR=/usr/local 配置环境变量
# RUN cd $JAVA_DIR && tar -xf ./jdk8.tar.gz && mv ./jdk1.8.0_144 ./java8 构建镜像过程中的命令,解压jdk8.tar.gz,文件改名为java8
docker push 镜像名:版本号 ——推送镜像
docker pull 镜像名:版本号 ——拉取镜像
docker save -o 文件名 镜像名:版本号 ——镜像导出(例如docker save -o redis.tar redis:latest)
docker load -i 文件名 ——镜像导入
docker images ——查看所有镜像
docker rmi 镜像名:版本号 ——删除镜像
容器操作命令
docker run --name 自己取个容器名 -p 主机端口:容器端口 -v 数据卷名:容器内目录 -d(表示后台运行) 镜像名:版本号 ——运行容器,具体的运行配置可以查看dockerhub官网
docker stop 容器名 ——停止容器
docker start 容器名 ——解除停止容器
docker pause 容器名 ——暂停容器
docker unpause 容器名 ——解除暂停容器
docker ps ——查看所有运行中的容器,加-a查看所有启动的容器
docker logs 容器名 ——查看容器日志,加-f持续监控日志输出
docker rm 容器名 ——删除容器
docker exec -it 容器名 bash ——进入容器,使用bash执行命令
数据卷操作命令
docker volume create 取个数据卷名 ——创建数据卷
docker volume ls ——列出所有数据卷
docker volume inspect 数据卷名 ——查看数据卷的详细信息,可以查看数据卷的挂载点
docker volume prune ——删除本地所有未使用的数据卷
docker volume rm 数据卷名 ——删除数据卷
docker run --name 容器名 -v 数据卷名:容器内目录/容器内文件 镜像名:版本号 ——上述运行容器中加个-v,可添加数据卷绑定
利用DockerCompose一键启动多项服务
先下载一个docker-compose文件,可以直接输入命令下载,也可以自己去网上找其他渠道提供的docker-compose文件
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
给文件提供可执行权
# 修改权限
chmod +x /usr/local/bin/docker-compose
下载一个DockerCompose命令自动补全的命令补丁,方便使用DockerCompose
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
可能无法解析raw.githubusercontent.com域名,可以给hosts文件添加一句话,199.232.68.133为该域名的IP地址
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
新建一个docker-compose.yml文件,然后在该文件目录下,执行docker-compose up -d一键部署以下服务
version: "3.2" #版本
services:
nacos: #启动后的所有容器之间可以用该容器名来互相访问,无需对外暴露端口
image: nacos/nacos-server #nacos在线镜像地址
environment:
MODE: standalone #nacos启动模式
ports:
- "8848:8848" #对外暴露端口
mysql:
image: mysql:5.7.25 #mysql本地镜像
environment:
MYSQL_ROOT_PASSWORD: 123 #mysql密码配置
volumes:
- "$PWD/mysql/data:/var/lib/mysql" #数据卷配置
- "$PWD/mysql/conf:/etc/mysql/conf.d/"
userservice:
build: ./user-service #该目录下存在一个Dockerfile文件,启动后边建立一个临时镜像,然后启动容器
orderservice:
build: ./order-service
gateway:
build: ./gateway
ports:
- "10010:10010"
建立一个本地的Docker镜像仓库
使用docker push时,需要获取Docker信任,如果私服采用的是http服务,则需要进行以下配置,来获取Docker信任
# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.230.100:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker
利用DockerCompose部署一个具有图形化的docker镜像仓库
version: '3.0'
services:
registry: #仓库注册
image: registry
volumes:
- ./registry-data:/var/lib/registry
ui: #ui界面
image: joxit/docker-registry-ui:static
ports:
- 8080:80
environment:
- REGISTRY_TITLE=个人私有仓库
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
新建一个镜像
docker tag nginx:latest 192.168.230.100:8080/nginx:1.0 #复制一个镜像,镜像名需要有ui界面的地址前缀,该地址在之前被设置过信赖
接下来就可以推送和拉取镜像了
docker push 192.168.230.100:8080/nginx:1.0
docker pull 192.168.230.100:8080/nginx:1.0