1. 什么是Docker
虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整运行的环境,容器之间相互隔离
2 . docker仓库
3. centos的Docker安装
- 卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装docker所需要的依赖包
sudo yum install -y yum-utils
- 设置docker仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker
sudo yum install \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
- 启动docker:
sudo systemctl start docker。或者使用命令systemctl enable docker --now启动docker并设置开机启动 - 查看docker版本:
docker -v - 设置开机启动:
systemctl enable docker
4. 配置镜像加速
可以参考配置地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
配置命令
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xjumdyb0.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
5. 常用的Docker命令
5.1 命令列表
#查看运行中的容器
docker ps
#查看所有容器
docker ps -a
#搜索镜像
docker search nginx
#下载镜像
docker pull nginx
#下载指定版本镜像
docker pull nginx:1.26.0
#查看所有镜像
docker images
#删除指定id的镜像
docker rmi e784f4560448 #(需替换成容器的名称或者是ID)
#运行一个新容器
docker run nginx
# 后台启动容器
docker run -d --name mynginx nginx
# 后台启动并暴露端口
docker run -d --name mynginx -p 80:80 nginx
# 进入容器内部
docker exec -it mynginx /bin/bash
#停止容器
docker stop keen_blackwell
#启动容器
docker start 592 #(592的位置需要替换成容易的名称或者容器的ID)
#重启容器
docker restart 592 #(592的位置需要替换成容易的名称或者容器的ID)
#查看容器资源占用情况
docker stats 592 #(592的位置需要替换成容易的名称或者容器的ID)
#查看容器日志
docker logs 592 #(592的位置需要替换成容易的名称或者容器的ID)
#删除指定容器
docker rm 592 #(592的位置需要替换成容易的名称或者容器的ID)
#强制删除指定容器
docker rm -f 592 #(592的位置需要替换成容易的名称或者容器的ID)
# 提交容器变化打成一个新的镜像
docker commit -m "update index.html" mynginx mynginx:v1.0
# 保存镜像为指定文件
docker save -o mynginx.tar mynginx:v1.0
# 删除多个镜像
docker rmi bde7d154a67f 94543a6c1aef #(需替换成容器的名称或者是ID)
# 加载镜像
docker load -i mynginx.tar
# 登录
docker hub docker login
# 重新给镜像打标签
docker tag mynginx:v1.0 leifengyang/mynginx:v1.0
# 推送镜像
docker push leifengyang/mynginx:v1.0
5.2 操作命令常用参数
doker pull 镜像名:版本号下载指定版本号的镜像,如果没有后边的:版本号就是下载最新的docker images查看下载的所有的镜像docker rmi 镜像名[:版本号]删除指定的镜像docker rmi 镜像ID根据镜像的ID进行删除镜像docker run --help对于运行run指令参数的说明docker run [OPTIONS] IMAGE [COMMAND] [ARG...]启动docker镜像doker ps查看正在运行的容器docker stop 容器ID停止运行的docker容器docker rm 容器的名字或者ID删除已经停止的容器docker start 容器的名字或者ID启动docker容器docker update 容器名字或者容器ID [--options]更新容器启动的参数docker rm -f 容器名字或者容器ID强制删除正在运行中的容器docker exec -it 容器id /bin/bash以交互模式进入容器的控制台docker commit [options] 容器 [镜像名称[:版本号]]提交容器docker logs 容器名或者ID访问容器的日志docker save [options] image [image]镜像保存docker save -o guigu.tar 镜像名称:版本号把镜像保存成一个物理文件
docker load -i 压缩包名称加载镜像- 推送镜像到远程仓库
docker tag 镜像名称 仓库名称:版本号给镜像打一个标签,也就是把旧的镜像名称改成远程仓库需要的新名称docker push 改名称后的镜像名称推送本地的镜像到远程仓库
docker login登陆docker logout推送完镜像后推出远程仓库docker --name=mynginx -d --restart=always -p80:80 nginx- –name 指定容器运行的名称
- -d 后台运行
- –restart 开机自启
- -p 映射端口
- -v 数据挂载
-v 主机的目录:容器的目录注意外部的挂载的目录要有对应的文件,不能为空
6. 存储
两种方式,注意区分:
- 目录挂载:
-v /app/nghtml:/usr/share/nginx/html - 卷映射:
-v ngconf:/etc/nginx
7. 网络
创建自定义网络,实现主机名作为稳定域名访问。因为docker自定义的网络是不能在docker的各个docker主机之间进行通信的
#自定义网络
docker network create 网络名称
8. Docker Compose
8.1 docker-compose的优点
- 增量更新
- 修改Docker Compose 文件。重新启动应用。只会触发修改项的重新启动
- 数据不删除
- 默认就算down了容器,所有挂载的卷不会被移除。比较安全
8.2 docker-compose.yml文件
name: myblog
services:
mysql:
container_name: mysql
image: mysql:8.0
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=wordpress
volumes:
- mysql-data:/var/lib/mysql
- /app/myconf:/etc/mysql/conf.d
restart: always
networks:
- blog
wordpress:
image: wordpress
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: 123456
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress:/var/www/html
restart: always
networks:
- blog
depends_on:
- mysql
volumes:
mysql-data:
wordpress:
networks:
blog:
9. Dockerfile文件
# from 是配置基础环境,依赖的基础环境是哪些
FROM openjdk:17
# 镜像的标签
LABEL author=leifengyang
# 把需要的文件复制到docker的小型linuxz中的根目录下
COPY app.jar /app.jar
# 暴漏端口
EXPOSE 8080
# 镜像的启动命令
ENTRYPOINT ["java","-jar","/app.jar"]
开始打包的命令docker build -t java-demo:v1.0 . 这里需要注意不要落下最后的一个点
评论区