Docker介绍
Docker作用:
解决环境差异,引发不兼容问题。
快速搭建环境,快速水平扩展(集群)
一次构建,应用到处运行。
docker 是一个开源的应用容器引擎,基于 Go 语言开发。
好处:
可移植性
可伸缩
隔离性
资源利用率高
镜像加速器配置:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://registry.dockermirror.com",
"阿里镜像",
"https://docker.nju.edu.cn",
"https://hub.littlediary.cn",
"https://hub.xdark.top",
"https://dockerpull.org",
"https://hub.crdz.gq",
"https://docker.1panel.live",
"https://docker.unsee.tech"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
镜像常用命令
查看镜像:
中央仓库连接不上。进行 【docker search 镜像名称】 会报超时问题。暂时不管或科学上网。
docker search redis
Error response from daemon: Get "https://index.docker.io/v1/search?q=redis&n=25": net/http: TLS handshake timeout
拉取镜像(下载)
docker pull 镜像名称[:tag] 如果不指定版本号,表示下载最新版本
删除镜像
# 删除单个镜像(-f 强制删除):
docker rmi -f 镜像ID
docker rmi -f $(docker images -q) # 慎用 根据id删除所有镜像
帮助命令:
哪里命令不会,就在哪个命令后面增加--help查询帮助文档。
docker images --help
docker xxx --help
容器常用命令
1.查询容器
docker ps 只查看正在运行的容器
docker ps -a 正在运行的容器以及停止的容器
docker ps -q 只查看正在运行的容器id
docker ps -aq 查看正在运行的容器以及停止的容器的id
2.创建容器
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name :为创建的容器命名。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
1.创建交换式容器
docker run -it --name=mycentos centos:7 /bin/bash
交互式容器一旦创建成功(创建+启动),那么,直接进入容器内部(每一个容器都是一个最小型虚拟机)。
exit 首次退出会停止容器。重新启动容器后登录,再退出。容器就不会停止。
2.创建守护式容器
docker run -id --name=mycentos centos:7
3.停止容器、启动容器、重启容器
docker stop 容器名称或id
docker start 容器名称或id
docker restart 容器名称或id
4.删除容器 (-f force)
docker rm -f 容器名称或id
删除正在运行的容器是不允许的。可以先停止再删除 或 加 -f 强制删除。
docker rm spzx_mysql
Error response from daemon: cannot remove container "/spzx_mysql": container is running: stop the container before removing or force remove
5.登录容器
docker exec -it 容器名称 /bin/bash
6.其他命令
docker logs -f 容器名称/容器的id # 查询容器内进程日志,-f参数表示实时监控日志信息 ctrl + c
docker inspect 容器名称/容器的id # 查看容器的详情信息
docker cp # 完成容器和宿主机之间的文件copy 容器即使停止也可以拷贝。
docker cp ./nginx.tar mycentos_01:/opt
docker cp mycentos_01:/opt/nginx.tar ./
7.备份与迁移
docker commit 容器名称/容器的id 镜像名称 # 把docker容器保存成一个镜像
docker save -o 镜像tar文件名称 镜像名称/镜像id # 把镜像保存为tar文件
docker load -i 镜像tar文件名称 # 把tar文件恢复成为一个镜像
数据卷
数据卷就是将容器里的目录和宿主机目录进行映射。将容器里的目录数据备份到宿主机目录里。容器删除,容器里的数据没了。
但是,重新创建容器,将容器里的目录跟宿主机目录进行挂载 ,数据就可以找回。(异地备份)
关于数据卷的操作:
docker volume ls # 查看数据卷列表
docker volume create 数据卷名称 # 创建数据卷生成的宿主机上的物理路径: /var/lib/docker/volumes/数据卷名称/_data
docker volume inspect 数据卷名称 # 查看数据详情
docker volume rm 数据卷名称 # 删除指定的数据卷
数据卷挂载:案例
docker run -d --name=redis01 -p 6380:6379 -v redis-data:/data redis:7.0.10
目录挂载:案例
docker run -d --name redis02 -p 6381:6379 -v /redis-data:/data redis:7.0.10
dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
dockerfile就是一个编写相关指令的文本文件。通过这个文件可以创建想要的镜像。
阿里云公开镜像:
1. 登录阿里云Docker Registry
$ docker login --username=yanjingkuang01 registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 将镜像推送到Registry
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/docker_xxx/centos7_jdk17:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/docker_xxx/centos7_jdk17:[镜像版本号]
3. 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/docker_xxx/centos7_jdk17:[镜像版本号]
|
docker compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Docker Compose作用:批量管理容器。
# 启动容器(如果不存在容器就创建、存在则修改)
docker compose -f docker-compose.yml up -d
# 删除所有容器
docker compose -f docker-compose.yml down
# 停止所有容器
docker compose -f docker-compose.yml stop
# 启动所有容器
docker compose -f docker-compose.yml start
# 重启所有容器
docker compose -f docker-compose.yml restart
|