栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker在window和ubuntu上的下载和使用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker在window和ubuntu上的下载和使用

docker的安装(win+ubuntu)

BY:ML22

在win10上的安装 第一步 配置win10
  • 首先在win上面使用docker需要专业版的win10

(淘宝10多块就有激活码了,输入激活码 重启下就能够完成激活)

  • 如果你满足Docker for Windows的环境条件了,那么首先检查电脑的虚拟化开启了没有:进入任务管理器(ctrl+alt+delete),点击性能->cpu ,查看虚拟化是否已启用,如果虚拟化是已禁用,那么你需要重启电脑进入bios开启虚拟化(我们的发的笔记本cpu都是支持虚拟化的,重启时进入bios按esc -> 再按f12 -> 去开启虚拟化)

  • 开启虚拟化重启后,进入任务管理器看虚拟化是否已启用。

  • 然后再是进入电脑的控制面板->程序->启用或关闭Windows功能->把Hyper-v勾上,启用后电脑会重启,后面就可以下载并安装Docker for Windows了。

第二步 下载docker
  • https://hub.docker.com/ 下载docker


  • 可以注册一个docker hub的账户,这是dockers官方的hub,可以用来拉取别人做好的镜像。

  • 然后在就可以在cmd中使用

    docker info
    

    来查看docker的相关信息了

第三步 将docker的储存位置移出系统盘
  1. 删除所有容器

    可以使用命令,查看所有容器:

    docker ps -a
    

    或者

    打开Docker Desktop for Window 的Dashboard界面,将该界面中的所有内容删除。

  2. 退出Docker Desktop

  3. 在控制台中,使用下面命令,关闭所有发行版

    wsl --shutdown
    
  4. 检查是否所有发行版都已经关闭。

    wsl --list --verbose
    
  5. 备份已有image数据

    通过下面命令,将已有的image数据,以tar格式备份已有数据到指定目录。目录根据自己实际情况指定。

    wsl --export docker-desktop-data E:MLdocker-desktop-data.tar
    
  6. 注销当前的docker-desktop-data发行版

    wsl --unregister docker-desktop-data
    
  7. 重新导入

    wsl --import docker-desktop-data E:MLdata E:MLdocker-desktop-data.tar --version 2
    
    • docker-desktop-data Docker Desktop存储image的发行版
    • 第二个路径,即指定vhdx新的放置目录。指定到目录级别即可,不用指定vhdx名。
    • 第三个路径,指定第5步中备份的数据。
  8. 重新运行Docker Desktop

在ubuntu上安装 第一步 安装docker或docker2(直接支持gpu)
  1. 升级apt

    sudo apt-get update
    
  2. 允许apt通过https使用repository安装软件包

    sudo apt-get install 
        apt-transport-https 
        ca-certificates 
        curl 
        gnupg-agent 
        software-properties-common
    
  3. 添加Docker官方GPG key

    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    (国内阿里云版 sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -)

  4. 验证key的指纹

    sudo apt-key fingerprint 0EBFCD88

  5. 添加稳定版repository

    sudo add-apt-repository 
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu 
       $(lsb_release -cs) 
       stable"
    

    国内阿里云版:

    sudo add-apt-repository 
       "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu 
       $(lsb_release -cs) 
       stable"
    
  6. sudo apt-get update
    
  7. 安装最新版本的docker ce和containerd

    sudo apt-get install docker-ce docker-ce-cli containerd.io
    
  8. 验证

    docker info
    
  9. 如果安装的是docker的需要取下载docker-nvidia,但docker2直接支持使用–runtime或–gpus all调用gpu

    # 查看是否已经安装过nvidia-docker1.0,若安装,则先卸载,因为nvidia-docker1.0不包含NVIDIA Runtime,需要单独下载,比较不适应,直接安装nvidia-docker2
    sudo docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
    # 若安装,则删除
    sudo yum remove nvidia-docker
    # 添加仓库
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
    # 安装nvidia-docker2,重载Docker daemon configuration
    sudo yum install -y nvidia-docker2
    sudo pkill -SIGHUP dockerd
    # 测试是否安装成功
    sudo docker run --runtime=nvidia --rm nvidia/cuda:10.0-base nvidia-smi
    
    
    
第二步 设置权限
  • 将非root用户加入docker组,以允许免sudo执行docker
sudo gpasswd -a 用户名 docker
  • 重启服务并刷新docker组成员
sudo service docker restart
newgrp - docker
  • 重启服务并刷新docker组成员
sudo service docker restart
newgrp - docker
第三步 Ubuntu 下修改docker的默认存储位置
  1. 查看docker信息(我的root dir已经修改好了)

    docker info
    

  1. 首先停止docker服务

    sudo service docker stop;
    

    2、进入 docker.service.d中,docker.service.d 如果没有请自行创建;

    cd etc/systemd/system/docker.service.d
    

    3、修改 docker-overlay.conf 文件,如果没有请自行创建;

    sudo vim docker-overlay.conf 
    

    4、在文件中添加内容

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd --graph="/media/ml/2TB/docker" --storage-driver=overlay
    

    5、重启docker

    systemctl daemon-reload
    sudo service docker start
    

    6、查看docker 信息,确认是否已经修改成功

    sudo docker info
    
docker使用 docker概念

· Docker 的常用文档:https://docs.docker.com/

· Docker 镜像: 用户基于镜像来运行自己的容器,可以把镜像当做容器的『源代码』,镜像体积很小,易于分享、存储和更新

· Registry: Docker 用 Registry 保存用户构建的镜像,Registry 分为公共和私有两种:

o Docker 公司运营的公共 Registry 叫做 Docker Hub,我们可以在上面注册账号,分享并保存自己的镜像。

o 可以在 Docker Hub 保存自己的私有镜像或者架设自己私有的 Registry

· Docker 容器: 把应用程序或服务打包放进去,容器是基于镜像启动的,容器中可以运行一个或多个进程。

o 镜像是 Docker 生命周期中的构建或打包阶段

o 容器则是启动或执行阶段

镜像相关命令

官方文档:https://docs.docker.com/reference/

查看镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB
  • REPOSITORY:镜像在仓库中的名称,本文中以后都简称镜像名称
  • TAG:镜像标签
  • IMAGE ID:镜像 ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小

这些镜像都是存储在 Docker 宿主机的 /var/lib/docker 目录下。

搜索镜像
docker search 镜像名称

  • NAME:镜像名称
  • DEscriptION:镜像描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否为官方构建
  • AUTOMATED:自动构建,表示该镜像由 Docker Hub 自动构建流程创建的。

拉取镜像

拉取镜像就是从中央仓库下载镜像到本地。

docker pull 镜像名称

假如我要拉取 centos 镜像到本地,如果不声明 tag 镜像标签信息则默认拉取 latest 版本,也可以通过:https://hub.docker.com/ 搜索该镜像,查看支持的 tag 信息。

通过查看 tag 信息,如果我们要下载 centos7 的镜像。

docker pull centos:7

删除镜像

按镜像 ID 删除镜像。

# 删除单个镜像
docker rmi 镜像ID
# 删除多个镜像
docker rmi 镜像ID 镜像ID 镜像ID

docker images -q 可以查询到所有镜像的 ID,通过组合命令可以实现删除所有镜像的操作。

docker rmi `docker images -q`

注意:如果通过某个镜像创建了容器,则该镜像无法删除。

解决办法:先删除镜像中的容器,再删除该镜像。

容器相关命令

查看容器

查看正在运行的容器。

[root@localhost ~]# docker ps
ConTAINER ID        IMAGE        COMMAND        CREATED        STATUS        PORTS        NAMES
  • ConTAINER ID:容器 ID
  • IMAGE:所属镜像
  • COMMAND:
  • CREATED:创建时间
  • STATUS:容器状态
  • PORTS:端口
  • NAMES:容器名称

查看停止的容器。

docker ps -f status=exited

查看所有容器(包括运行和停止)。

docker ps -a

查看最后一次运行的容器。

docker ps -l

列出最近创建的 n 个容器。

docker ps -n 5

创建与启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • -i:表示运行容器;
  • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端;
  • --name:为创建的容器命名;
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上;
  • -d:在 run 后面加上 -d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加 -i -t 两个参数,创建容器后就会自动进容器里);
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口映射。
  • -P:随机使用宿主机的可用端口与容器内暴露的端口映射。

创建并进入容器

下面这行命令的意思就是通过镜像 AA 创建一个容器 BB,运行容器并进入容器的 /bin/bash。

docker run -it --name 容器名称 镜像名称:标签 /bin/bash

注意:Docker 容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为是空闲状态,就会自动退出。

退出当前容器

exit

守护式方式创建容器

docker run -di --name 容器名称 镜像名称:标签

登录守护式容器方式

docker exec -it 容器名称|容器ID /bin/bash

停止与启动容器

# 停止容器
docker stop 容器名称|容器ID
# 启动容器
docker start 容器名称|容器ID

文件拷贝

如果我们需要将文件拷贝到容器内可以使用 cp 命令。

docker cp 需要拷贝的文件或目录 容器名称:容器目录

也可以将文件从容器内拷贝出来。

docker cp 容器名称:容器目录 需要拷贝的文件或目录

目录挂载(容器数据卷操作)

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器,而且这个操作是双向绑定的,也就是说容器内的操作也会影响到宿主机,实现备份功能。

但是容器被删除的时候,宿主机的内容并不会被删除。如果多个容器挂载同一个目录,其中一个容器被删除,其他容器的内容也不会受到影响。

容器与宿主机之间的数据卷属于引用的关系,数据卷是从外界挂载到容器内部中的,所以可以脱离容器的生命周期而独立存在,正是由于数据卷的生命周期并不等同于容器的生命周期,在容器退出或者删除以后,数据卷仍然不会受到影响,数据卷的生命周期会一直持续到没有容器使用它为止。

创建容器添加 -v 参数,格式为宿主机目录:容器目录,例如:

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名

目录挂载操作可能会出现权限不足的提示。这是因为 CentOS7 中的安全模块 SELinux 把权限禁掉了,在 docker run 时通过 --privileged=true 给该容器加权限来解决挂载的目录没有权限的问题。

匿名挂载

匿名挂载只需要写容器目录即可,容器外对应的目录会在 /var/lib/docker/volumes 中生成。

# 匿名挂载
docker run -di -v /usr/local/data --name centos7-02 centos:7
# 查看 volume 数据卷信息
docker volume ls

具名挂载

具名挂载就是给数据卷起了个名字,容器外对应的目录会在 /var/lib/docker/volume 中生成。

# 匿名挂载
docker run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7
# 查看 volume 数据卷信息
docker volume ls

指定目录挂载

一开始给大家讲解的挂载方式就属于指定目录挂载,这种方式的挂载不会在 /var/lib/docker/volume 目录生成内容。

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名

查看目录挂载关系

通过 docker volume inspect 数据卷名称 可以查看该数据卷对应宿主机的目录地址。

[root@localhost ~]# docker volume inspect docker_centos_data
[
    {
        "CreatedAt": "2020-08-13T20:19:51+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/docker_centos_data/_data",
        "Name": "docker_centos_data",
        "Options": null,
        "Scope": "local"
    }
]

通过 docker inspect 容器ID或名称 ,在返回的 JSON 节点中找到 Mounts,可以查看详细的数据挂载信息。

只读/读写

# 只读。只能通过修改宿主机内容实现对容器的数据管理。
docker run -it -v /宿主机目录:/容器目录:ro 镜像名
# 读写,默认。宿主机和容器可以双向操作数据。
docker run -it -v /宿主机目录:/容器目录:rw 镜像名

volumes-from(继承)

# 容器 centos7-01 指定目录挂载
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 容器 centos7-04 和 centos7-05 相当于继承 centos7-01 容器的挂载目录
docker run -di --volumes-from centos7-01:ro --name centos7-04 centos:7
docker run -di --volumes-from centos7-01:rw --name centos7-05 centos:7

查看容器 IP 地址

我们可以通过以下命令查看容器的元信息。

docker inspect 容器名称|容器ID

也可以直接执行下面的命令直接输出 IP 地址。

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器ID

删除容器

# 删除指定容器
docker rm 容器名称|容器ID
# 删除多个容器
docker rm 容器名称|容器ID 容器名称|容器ID

推荐一个B站视频课(不是打广告哈)部分内容也是引用这个课间的介绍:

视频教学-自学还是很不错的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360776.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号