文章目录

  • 一、安装Docker
  • 1、安装docker的依赖环境
  • 2、设置docker的镜像源(此处是阿里源)
  • 3、安装docker
  • 4、启动并设置为开启自启动
  • 5、测试
  • 6、docker的中央仓库
  • 二、基础镜像命令
  • 三、容器命令
  • 1、运行启动容器
  • 2、查看正在运行的容器
  • 3、查看容器的日志
  • 4、进入到容器内部
  • 5、删除容器(删除容器前,需要先停止容器)
  • 6、启动容器
  • 7、退出容器
  • 8、显示容器的进程信息
  • 9、查看镜像的元数据
  • 10、从容器内拷贝文件到主机上
  • 11、目录挂载(容器数据卷操作)通过目录挂载,防止容器被误删造成数据丢失
  • (1)、指定目录挂载
  • (2)、匿名挂载
  • (3)、具名挂载
  • (4)、进行挂载的时候,也可以设置权限,只读/只写
  • (5)、继承(volumes-from)
  • 12、查看目录挂载关系
  • 13、查看容器IP地址
  • 14、容器导出
  • 15、容器导入(会生成镜像,而不会创建容器)
  • 16、容器互联(使用centos镜像)
  • 17、Docker 镜像的备份恢复迁移
  • (1)、镜像备份
  • (2)、镜像恢复
  • (3)、镜像迁移
  • 总结:


一、安装Docker

1、安装docker的依赖环境

yum -y install yum-utils device-mapper-persistent-data lvm2

2、设置docker的镜像源(此处是阿里源)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装docker

yum makecache fast
yum -y install docker-ce docker-ce-cli containerd.io

4、启动并设置为开启自启动

systemctl start docker 			#启动docker
systemctl enable docker			#设置开机自启动

5、测试

docker run hello-world        #先在本地仓库查找,本地没有会去网上找

6、docker的中央仓库

1)docker官方的中央仓库,这个仓库镜像最全,但是下载速度较慢
http://docs.docker.com
2)国内的镜像网站
https://c.163yun.com/hub#/home      (网易数帆)
http://hub.daocloud.io (推荐使用)
http://docker.mirrors.ustc.edu.cn  (中科大开源镜像)
http://hub-mirror.c.163.com    (网易开源镜像)

二、基础镜像命令

docker version 			   #显示docker的版本信息
docker info				   #显示docker的更加详细的信息,包括镜像和容器的数量
systemctl status docker    #查看docker状态
docker stats               #查看docker内容器的运行状态
docker info                #查看docker概要信息
docker --help              #查看docker帮助文档

REPOSITORY:镜像的仓库源
TAG :镜像的标签
IMAGE ID:镜像的id
CREATED:镜像创建的时间
SIZE:镜像的大小

可选项:
-a:查看全部的容器,包括没有运行的
-q:只查看容器的标识

docker search 镜像名称      #搜索镜像
可选项,通过收藏来过滤
--filter=stars=对应项的数字
#拉取镜像到本地
docker pull 镜像名称[:tag]

#上传镜像
docker push 镜像名称[:tag]

#查看本地全部镜像
docker images 

#删除本地镜像
docker rmi 镜像的标识(image id) 例:docker rmi redis:5 或者 docker rmi d1165f221234 (通过image ID删除)
docker rmi $(docker images -qa)			#删除全部镜像
docker images | awk '{print "docker rmi "$3}' | bash   #删除全部镜像

#镜像的导入导出(不规范)
将本地的镜像导出
docker save -o 导出的路径 镜像id
加载本地镜像文件
docker load -i 镜像文件
修改本地上传镜像名
docker tag 镜像id 新镜像名称:tag(版本)

#docker的默认工作路径
/var/lib/docker

#配置阿里云镜像加速
mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https:......com"] #此处镜像加速命令需要自己注册阿里云账号在控制台中自己复制
}
EOF

systemctl daemon-reload        #重新加载服务的配置文件
systemctl restart docker       #重启docker

首先登录“阿里云”,然后注册后登录,点击控制台

docker镜像中安装cuda docker安装镜像命令_docker镜像中安装cuda


在搜索框中搜索“容器镜像服务”

docker镜像中安装cuda docker安装镜像命令_docker_02


点击镜像加速服务

docker镜像中安装cuda docker安装镜像命令_docker镜像中安装cuda_03


最后选择相应的系统复制框中内容即可

docker镜像中安装cuda docker安装镜像命令_nginx_04

三、容器命令

1、运行启动容器

#简单操作
docker run 镜像标识|镜像名称[:tag]
#常用参数
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像标识|镜像名称[:tag]
选项:
-d:后台运行容器
-p:宿主机端口:容器端口:为了映射当前Linux的端口和容器的端口
--name 容器名称:指定容器的名称 
--it 使用交互方式运行,进入容器查看内容
-P:指定容器端口
-p:随机指定端口

例:docker run --name mynginx -p 80:80 nginx        #操作台运行
    docker run -di --name mynginx -p 80:80 nginx    #后台运行

2、查看正在运行的容器

docker ps 
选项:
-f:过滤    
-a:查看全部的容器,包括没有运行的
-q:只查看容器的标识
-n=?:显示最近创建的容器
-l:查看最后创建的容器

例:docker ps -f status=exited  #过滤已经存在但停止的容器
    docker ps -n 5   #列出最近创建的n个容器

3、查看容器的日志

docker logs -f 容器id
docker logs -ft --tail num 容器id
选项:
--tail num:要显示日志的条数
-tf:显示日志

4、进入到容器内部

docker exec -it 容器id/容器名称 /bin/bash		
docker attach 容器id

区别:
docker exec:进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach:进入容器正在执行的终端,不会启动新的进程

5、删除容器(删除容器前,需要先停止容器)

docker stop 容器id								   #停止指定的容器
docker stop $(docker ps -qa)					   #停止全部容器

docker rm 容器名/容器id						       #删除指定的容器,删除前该容器需要停止
docker rm $(docker ps -qa)						   #删除状态不是up外的所有容器
docker ps -a | awk '{print "docker rm "$1}'|bash   #删除状态不是up外的所有容器

6、启动容器

docker start 容器id/容器名称

7、退出容器

exit			#直接容器停止并退出
Ctrl+P+Q		#容器不停止退出

8、显示容器的进程信息

docker top 容器id

9、查看镜像的元数据

docker inspect 容器id

10、从容器内拷贝文件到主机上

#如果我们需要将文件拷贝到容器内可以使用cp命令。
docker cp 需要拷贝的文件或目录(目的主机路径) 容器名称/ID:容器目录(绝对路径)

#也可以将文件从容器内拷贝出来。
docker cp 容器名称/ID:容器目录(绝对路径) 需要拷贝的文件或目录(目的主机路径)

11、目录挂载(容器数据卷操作)通过目录挂载,防止容器被误删造成数据丢失

(1)、指定目录挂载

docker run -di --name nginx02 -p 81:80 -v /mydata/docker_nginx/:/abc/123 nginx
##-di为后台运行,创建并运行一个叫做nginx02的容器,将宿主机的81端口与容器中nginx的80端口进行关联,使用-v选项将宿主机的/mydata/docker_nginx/目录与容器中的/abc/123目录进行关联挂载

#如果一开始没有进行挂载,可以后期在配置文件中进行修改
 docker inspect nginx02     #修改配置文件的命令
    "Mounts": [             #修改mounts下内容
            { 
                "Type": "bind",
                "Source": "/mydata/docker_nginx",    #宿主机挂载目录
                "Destination": "/abc/123",           #容器挂载目录
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }

(2)、匿名挂载

docker run -di -v /usr/local/data --name centos7 centos:7
#后台运行,创建并运行叫做centos7的容器,此处只指定了容器的目录/usr/local/data,没有指定宿主机的目录,因为匿名挂载,都会被默认挂载到宿主机的/var/lib/docker/volumes/目录下

(3)、具名挂载

docker run -di -v docker_centos_data:/usr/local/data --name centos02 centos:7
#具名挂载也是挂载在宿主机的/var/lib/docker/volumes/下,但是不是随机起名字进行挂载的,而是根据自己起的名字进行挂载,此处起的名字为docker_centos_data

(4)、进行挂载的时候,也可以设置权限,只读/只写

docker run -di --name nginx07 -P -v /mydata/docker_nginx/:/abc:ro nginx
#-P是随机指定端口,ro是只读权限,rw是只写权限

(5)、继承(volumes-from)

docker run -di --name nginx09 --volumes-from nginx07:rw nginx
#创建运行叫做nginx09的容器,使用--volumes-from命令继承nginx07的所有的挂载目录与文件,并设置为只写权限(:rw)

12、查看目录挂载关系

[root@localhost ~]# docker volume inspect docker_centos_data    #docker_centos_data是创建在的目录卷
    {
        "CreatedAt": "2021-03-19T16:02:53+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/docker_centos_data/_data",   #从这里可以看到创建的数据集位置
        "Name": "docker_centos_data",
        "Options": null,
        "Scope": "local"
    }
]

13、查看容器IP地址

[root@localhost ~]# docker inspect  nginx07        #查看容器nginx07的IP
                    "Gateway": "172.17.0.1",       #容器的网关
                    "IPAddress": "172.17.0.5",     #容器的IP
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:05",
                    "DriverOpts": null

14、容器导出

docker export 6c9aabe7b1e5 > nginx_c

15、容器导入(会生成镜像,而不会创建容器)

cat nginx_c | docker import-nginx:web

16、容器互联(使用centos镜像)

docker run -itd -P --name web11 centos:7 /bin/bash  #创建并运行容器取名web11,端口号自动映射
docker run -itd -P --name web22 --link web11:web11 centos:7 /bin/bash   #创建并运行容器取名web22,链接到web11和其通信

进web22容器ping web1
#--link name:alias --link容器名:别名

17、Docker 镜像的备份恢复迁移

(1)、镜像备份

使用docker save 将指定镜像保存成tar 归档文件。
docker save [OPTIONS] IMAGE [IMAGE…]

例如:docker save -o /root/mycentos.tar mycentos:7
● -o :镜像打包后的归档文件输出的目录。

(2)、镜像恢复

使用docker load导入docker save命令导出的镜像归档文件。

docker load [OPTIONS]

例如:docker load -i /root/mycentos.tar
●–input, -i :指定导入的文件;
●–quiet, -q :精简输出信息。

(3)、镜像迁移

镜像迁移同时涉及到了上面两个操作,备份和恢复。
我们可以将任何一个Docker镜像从一台机器迁移到另一台机器。在迁移过程中,首先我们要把容器构建为Docker镜像。然后,该Docker镜像被作为tar包文件保存到本地。此时只需要拷贝或移动该镜像到我们想要的机器上,恢复该镜像并运行容器即可。
当然除了这种方式之外,我们还可以使用镜像仓库实现镜像的备份恢复迁移,接下来我们就学习一下如何使用DockerHub的镜像仓库。

总结:

1、镜像上传(push) / 下载(pull) / 打标签(tag) / 删除(rmi) / 导出(save -o) / 导入(load)
2、容器创建(create) / 进入(exec) / 运行(run) / 删除(rm) / 导出(export) / 导入(import)
   数据卷(-v) / 数据卷容器(--volumes-from) / 链接容器(--link) / 暴露端口(随机:-P 指定:-p)
3、仓库下载registry镜像-->运行容器暴露端口5000---->修改daemon.json文件---->重启docker----->打标签(IP: 端口/名称)--->上传/下载