Docker知识点整理

大纲

  • docker命令
    • 检查内核
    • 镜像指令
      • 配置镜像源
      • 下载镜像
      • 查看所有镜像
      • 运行镜像(应该叫创建容器)
      • 创建新镜像
        • 使用commit
        • 使用build
      • 删除镜像
        • 删除没有容器的镜像
        • 删除所有没有容器的镜像
        • 强制删除所有容器后再删除所有镜像
        • 删除当前镜像下的所有容器
    • 容器指令
      • 查看所有容器
      • 创建容器
      • 启动容器
      • 重启容器
      • 停止容器
      • 删除容器
      • 进入容器
    • 远程仓库
        • 登录账号
        • 登出账号
        • 标记本地镜像,归入Docker账号用户名的仓库
        • 推送镜像
        • 在Docker Hub上查看镜像上传结果
        • 换源,配置及使用Docker加速器
        • 拉取镜像
    • 数据卷
      • 创建一个数据卷
      • 查看数据卷
      • 查看卷的详细信息
      • 删除卷
    • 数据卷容器
      • 创建一个带有映射数据过去数据卷的容器
        • 示例:
      • 创建一个数据卷容器
      • 查询创建容器的信息
      • 将一个容器中的数据卷与其他n个容器的数据卷共享
      • 彻底删除数据卷容器中的被其他容器所共享的数据卷
    • 数据备份与恢复
    • docker网络
      • Docker原生网络介绍
        • none网络
        • host网络
        • bridge网络
      • 查看Docker安装后,自动在主机创建的三个网络。
      • 设置Docker容器网络为none网络
      • 设置Docker容器网络为host网络
      • 自定义网络
  • Compose命令
    • 1.创建一个work文件夹

docker命令

检查内核

uname-r

更新最新的包管理

sudo yum upade

卸载旧版本

sudo remove docker docker-common docker-selinux docker-engine

加载 Device Mapper 模块

modprode dm-mod

验证 Device Mapper 安装

ls -l /sys/class/misc/device-mapper

安装docker-Io

yum -y install docker-io

启动服务器

service docker start

设置开机启动

systemctl enable docker.service

查看docker信息

docker info

查看docker版本

docker version 或 docker -v

docker daemon 是否激活

systemctl status docker.service

配置docker daemon 可在不只在主机上能访问

cd /usr/lib/systemd/system

vim docker.service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FlxUXWnY-1586577864418)(http://note.youdao.com/yws/res/4284/WEBRESOURCE5d7c74f423332ecc86cf3ec672487281)]

然后重启docker daemon

systemctl daemon-reload

systemctl restart docker.service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hs447weK-1586577864420)(http://note.youdao.com/yws/res/4290/WEBRESOURCEc58f712b1c8972ed7a88d029ee90b31d)]

查看centos系统的网络接口

netstat -tulp

查看连接到服务器的信息

docker -H 192.168.178.169

镜像指令

配置镜像源

vim /etc/docker/daemon.json

添加如下内容
{
	“registry-mirrors”:["http://hub-mirror.c.163.com"]
}

然后  重新载入systemd,扫描新建和改变的单元
sudo systemctl deamon-reload

重新启动docker服务
sudo service docker restart

下载镜像

docker pull hello-world
docker pull ubuntu

查看所有镜像

docker images
docker images hello-world   // 查看指定镜像

运行镜像(应该叫创建容器)

docker run hello-world

创建新镜像

使用commit

//在容器内创建一个新镜像
docker run -it ubuntu // 进入到ubuntu容器内  容器是镜像的实例化
docker commit 86b007dc3533 07cxy:v1
	// 86b007dc3533 是容器的ID
	// 07cxy:v1 是要新创建的镜像名字
容器的ID可通过运行容器 然后docker ps 拿到

docker commit -a "cxy" -m "a test" a404c6c174a2  mymysql:v1 
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

使用build

// 要在那个dockerfile文件的目录中
docker build -t dockertest_mysql

删除镜像

删除没有容器的镜像

docker rmi 镜像ID

删除所有没有容器的镜像

docker rmi $(docker images-q)

强制删除所有容器后再删除所有镜像

docker rm -f $(docker ps -aq) & docker rmi $(docker images -q)

删除当前镜像下的所有容器

docker rm $(docker ps -a | grep ubuntu)

容器指令

查看所有容器

docker ps -a   // 查看当前系统环境下, 所有的容器(包括停止的容器)
docker ps -aq  // 查看当前系统环境下, 所有的容器(包括停止的容器)的ID

创建容器

docker run hello-world  // 简单创建
docker run -d -p 33063306 镜像名字/ID
	/* 
		-d 后台运行容器,并返回容器ID。
		-p 随机端口映射,容器内部端口随机映射到主机的高端口
	*/

启动容器

docker start 已经停止容器的ID/名字

重启容器

docker restart 正在运行容器的ID/名字

停止容器

docker stop 正在运行容器的ID/名字------停止容

删除容器

docker rm 已经停止的容器的ID/名字
docker rm $(docker ps -aq)  // 删除所有已经停止运行的容器

// 删除并停用所有的容器(包括停止和运行)
docker stop $(docker ps -q) & docker rm -f $(docker ps -aq) 

进入容器

进入前要先启动容器

然后:	docker exec -it 容器ID/名字 bash

Docker知识点整理_第1张图片

远程仓库

登录账号

docker login

登出账号

docker logout

标记本地镜像,归入Docker账号用户名的仓库

docker tag nginx:v1 qddscxy/nginx:v1

// 然后查看下镜像: 如下图

Docker知识点整理_第2张图片

推送镜像

docker push qddscxy/nginx:v1

Docker知识点整理_第3张图片

在Docker Hub上查看镜像上传结果

Docker知识点整理_第4张图片

换源,配置及使用Docker加速器

这里以CentOS系统为例。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f361db2.m.daocloud.io
该脚本可以将 --registry-mirror 加入到你的Docker配置文件/etc/docker/daemon.json中。
适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。

Docker知识点整理_第5张图片

记得systemctl restart docker

检查换源结果,我们进入到/etc/docker路径,查看一下daemon.json,发现本机Docker的镜像地址已经修改。

Docker知识点整理_第6张图片

拉取镜像

docker pull qddscxy/nginx:v1

因为本地存在了,所以他更新了

在这里插入图片描述

查看下应该是这玩意

Docker知识点整理_第7张图片

使用docker run命令运行下载的镜像,运行的结果和本地上传的镜像运行结果相同。

Docker知识点整理_第8张图片

数据卷

数据卷是Docker主机文件系统中的目录或文件,能够直接被挂到容器的文件系统中。

数据卷的特点:

​ 1、数据卷是目录或文件,不是没有格式化的磁盘。

​ 2、容器可以读写数据卷中的数据。

​ 3、数据卷数据可以被永久的保存,即使使用它的容器已经销毁。

创建一个数据卷

docker volume create AtestVolume

在这里插入图片描述

查看数据卷

docker volume list

在这里插入图片描述

查看卷的详细信息

docker inspect AtestVolume

Docker知识点整理_第9张图片

删除卷

docker volume rm  AtestVolume

在这里插入图片描述

数据卷容器

数据卷容器是专门为其他容器提供数据卷的容器。它提供的卷可以是绑定装载的卷,也可以是Docker管理卷。

​ Docker管理卷与绑定装载的区别就是不需要指定绑定源,只需要指定绑定点就可以。

例如:想要创建多个centos容器,并且希望这些容器之间共享数据,可以先创建一个数据卷容器,该容器中并不运行任何应用。

创建一个带有映射数据过去数据卷的容器

docker run -it -v /06ke:/data --privileged=true centos bash

注意:	/06ke 是本地文件目录
	  /data 是存在数据卷的文件夹
	  --privileged=true  进入data目录就拥有读写权限。
	  centos  centos系统
	  ro选项,来指定挂载时文件权限是只读的。
	  	# docker run -it -v /06ke:/data:ro --privileged=true centos bash
	  
	  
同样我们可以在Dockefile中,使用 VOLUME 指令来创建添加一个或多个数据卷。

示例:

Docker知识点整理_第10张图片

创建一个数据卷容器

docker run -it -v/data --name a_test_rongqi centos

在这里插入图片描述

查询创建容器的信息

docker inspect a_test_rongqi centos

Docker知识点整理_第11张图片

将一个容器中的数据卷与其他n个容器的数据卷共享

​ --volumes-from 把多个容器中的多个数据卷放到一起。

之前创建一个有一个数据卷的容器

docker run -it -v/data --name a_test_rongqi centos

创建一个名为data01的容器

在这里插入图片描述

创建一个名为data02的容器

在这里插入图片描述

测试下

Docker知识点整理_第12张图片

彻底删除数据卷容器中的被其他容器所共享的数据卷

​ 1.删除所有使用共享数据卷的容器

docker ps 查看下
然后docker rm -f 容器ID

​ 2.列出所有不被引用的数据卷。

docker volume  ls  -f dangling=true

​ 3.使用docker volume rm命令,删除数据卷容器中共享的数据卷

docker volume rm 容器ID 

数据备份与恢复

可以使用如下命令将数据卷中的数据打包,并将打包后的文件拷贝到主机当前目录中,我们使用–volumes-from 参数来创建一个挂载了要备份数据卷的容器。

[root@centos-7 zxc]# docker run --volumes-from data_provider -v $(pwd):/backup --name backup_worker1 --privileged=true centos tar -cvPf /backup/backup.tar /data


docker网络

docker network ls

在这里插入图片描述

Docker原生网络介绍

none网络

设置容器为none网络

docker run --network=none --device /dev/snd docker.io/zhaoxc/music-java

host网络

bridge网络

查看Docker安装后,自动在主机创建的三个网络。

docker network ls 

Docker知识点整理_第13张图片

设置Docker容器网络为none网络

创建容器时,使用 --network=none 参数,设置Docker容器网络为none网络。 none网络为隔离网络,一般对安全性高并且不需要联网的应用可使用,比如随机产生密码的容器。

docker run -it --network=none --device /dev/snd music-java:v1

设置Docker容器网络为host网络

使用 --network=host 参数,设置Docker容器网络为host网络。

docker run -it --network=host --device /dev/snd/ music-centos:v1

host网络和主机网络一样

自定义网络

Docker知识点整理_第14张图片

在这里插入图片描述

Compose命令

注意:大部分的 compose 命令都需要到 docker-compose.yml 文件所在的目录下才能执行。

使用docker-compose up命令来构建并启动容器。

如果Compose要以守护进程模式运行,需要使用-d参数。

1.创建一个work文件夹

Docker知识点整理_第15张图片

你可能感兴趣的:(Docker大笔记)