概述
Docker是一个开源的应用容器引擎,可以让开发者打包应用及其依赖到一个轻量级、可移植的容器中,然后发布到任何Linux服务器上,也可以实现虚拟化。容器完全采用沙箱机制,格子独立,相互之间不会有任何接口暴漏,更重要的是容器的开销极低。
安装
介绍三种场景下docker的安装方式
Ubuntu
第一步:需要切换管理员指令
1 | sudo su |
第二步:更新Ubuntu系统上的软件包列表
1 | apt-get update |
第三步:安装依赖工具
1 | apt install apt-transport-https ca-certificates curl software-properties-common gnupg |
第四步:添加docker秘钥
1 | curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - |
第五步:添加docker软件源
1 | sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" |
第六步:安装Docker
1 | apt-get install docker-ce docker-ce-cli containerd.io |
第七步:检查Docker是否安装成功
1 | docker --version |
CentOS
第一步:切换为root用户
1 | su + Enter |
第二步:安装yum工具包
1 | yum install -y yum-utils |
第三步:设置阿里云镜像
1 | yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
第四步:安装Docker
1 | sudo yum install docker-ce docker-ce-cli containerd.io |
第五步:启动Docker
1 | systemctl start docker |
第六步:设置Docker开机自启动
1 | systemctl enable docker |
第七步:检查Docker是否安装成功
1 | docker --version |
windows
Docker Desktop是Docker的Windows桌面版,在Windows上使用Docker只需要安装配置它即可
第一步:访问Docker官网,下载Docker desktop。
第二步:双击运行 Docker Desktop Installer.exe
完成安装
第三步:配置镜像加速
在Docker Engine中加入以下信息:
1 | "registry-mirrors": [ |
第四步:检查Docker是否安装成功
按住 win + r
进入控制命令终端,输入 docker --version
有显示版本号则安装成功。
使用
参数介绍
1 | OPTIONS:选项参数,在输入指令时的一些配置参数,如运行容器时的端口映射、数据挂载等 |
启动指令
1.启动Docker
1 | systemctl start docker |
2.关闭Docker
1 | systemctl stop docker |
3.重启Docker
1 | systemctl restart docker |
4.设置开机自启动
1 | systemctl status docker |
5.查看当前版本
1 | docker --version |
镜像指令
1.搜索镜像
1 | docker search [IMAGE_NAME] |
2.拉取镜像
1 | docker pull [IMAGE_NAME] |
3.拉取指定版本镜像
1 | docker pull [IMAGE_NAME]:[TAG] |
4.推送镜像
1 | docker push [IMAGE_NAME] |
5.推送指定版本镜像
1 | docker push [IMAGE_NAME]:[TAG] |
6.将镜像打包成压缩文件
1 | docker save -o [FILE_NAME] [IMAGE_NAME]/[IMAGE_ID] |
7.将压缩包加载为镜像
1 | docker load -i [FILE_NAME] |
8.删除镜像
1 | docker rmi [IMAGE_NAME]/[IMAGE_ID] |
9.强制删除镜像
1 | docker rmi -f [IMAGE_NAME]/[IMAGE_ID] |
容器指令
1.查看正在运行的容器
1 | docker ps |
2.查看所有容器
1 | docker ps -a |
3.启动一个或多个容器
1 | docker start [OPTIONS] [CONTAINER_NAME...]/[CONTAINER_ID...] |
4.停止或运行多个容器
1 | docker stop [OPTIONS] [CONTAINER_NAME...]/[CONTAINER_ID...] |
5.重启一个或多个容器
1 | docker restart [OPTIONS] [CONTAINER_NAME...]/[CONTAINER_ID...] |
6.暂停一个或多个容器中的所有进程
1 | docker pause [CONTAINER_NAME...]/[CONTAINER_ID...] |
7.恢复一个或多个容器
1 | docker unpause [CONTAINER_NAME...]/[CONTAINER_ID...] |
8.删除一个或多个容器
1 | docker rm [OPTIONS] [CONTAINER_NAME...]/[CONTAINER_ID...] |
9.查询容器详情
1 | docker inspect [CONTAINER_NAME...]/[CONTAINER_ID...] |
10.运行容器
1 | docker run [OPTIONS] [IMAGE_NAME] [ARG] |
运行参数解析和示例
1 | OPTIONS:作为运行容器的选项,可以添加多个选项来配置容器的运行 |
11.查看数据卷
1 | docker volume inspect [VOLUMN_NAME] |
12.删除数据卷
1 | docker volumn rm [VOLUMN_NAME] |
13.查询容器日志
1 | docker logs [CONTAINER_NAME]/[CONTAINER_ID] |
14.跟随容器日志输出
1 | docker logs [CONTAINER_NAME]/[CONTAINER_ID] |
15.进入容器执行指令
1 | docker exec -it [CONTAINER_NAME]/[CONTAINER_ID] bash |
其他指令
1.创建一个容器网络
1 | docker network create [NETWORK_NAME] |
2.查看容器内网络
1 | docker network ls |
3.查看网络数据源
1 | docker network inspect [NETWORK_NAME] |
4.删除网络
1 | docker network rm [NETWORK_NAME] |
5.Docker间的通信方式
1 | 1.主机名通信 |
Docker-compose
docker-compose是用来定义和运行多容器的Docker应用程序工具。通过ymal格式文件来配置引用程序所需要的所有服务。然后通过一个命令就可以从yaml文件中创建并启动所有服务。
安装docker-compose
1 | sudo apt install docker-compose |
创建一个docker-compose.yaml文件
1 | version: "3" |
运行docker-compose文件,根据配置内容拉取运行镜像和容器
1 | docker-compose up -d |
Dockerfile
Dockerfile是一个文本文件,包含构建Docker镜像的所有指令。docker通过读取Dockerfile中的指令生成镜像。docker builder build 命令用于从 Dockerfile 构建镜像。
1.构建镜像
1 | docker build -t image_name:latest . |
该指令会从当前目录读取 Dockerfile 并构建一个名为 image_name:latest 的镜像。 -t 指令为构建的镜像指定名称和标签。
2.获取指定目录下的Dockerfile文件构建镜像
1 | docker build -f /path/Dockerfile -t iamge_name:latest . |
该指令会从 /path/ 目录下读取 Dockerfile 并构建一个名为image_name:latest 的镜像
3.Docker文件
1 | FROM adoptopenjdk/openjdk8 # 指定基础镜像 |
问题梳理
1.运行docker时出现docker无权限:docker.sock: connect: permission denied
解决方式:
(1) 在命令前面使用sudo来以管理员用户身份运行:sudo docker ps
(2)将用户添加到Docker组:sudo usermod -aG docker $USER
,新建新会话后生效。
场景
场景一
1.现有一个nacos容器,需要对它的配置文件进行自定义配置,但是无现成的nacos配置文件,如何对配置文件进行自定义配置?
(1)临时运行一个nacos容器
1 | docker run -e MODE=standalone --name nacos-temp -d -p 8848:8848 nacos/nacos-server |
(2)从容器中复制配置文件到宿主机
1 | # 创建宿主机上的配置文件存储目录 |
(3)停止并删除容器
1 | docker stop nacos-temp |
(4)c此时便能将容器中的文件复制出来使用。