Docker学习笔记
1.什么是Docker?
自己理解:docker是辅助开发部署运行维护的一种虚拟化工具。
重要概念 : 镜像、容器、仓库。
三者之间联系:仓库存放镜像,镜像生成容器。
镜像与容器之间的关系:镜像与容器的差别在于镜像是只读的容器是可写的可以类比java语言中类与对象的概念,镜像相当于类容器相当于对象一个类可以生成多个对象同理一个镜像可以生成多个容器,那么也就是说镜像相当于模板而容器相当于模板生成的具体的物质,你可以在这个物质上做任何想做的事。
2.Docker的安装及运行
- 安装运行
Docker官网:
http://www.docker.com(英文)
https://www.docker-cn.com(中文)
https://hub.docker.com(docker仓库)
安装方式在官方文档上都有建议阅读,我在这里只列出我自己现在所使用的centos7(其他一系列的操作系统官方都有讲解)。
官方文档:
https://docs.docker.com/install/linux/docker-ce/centos/
Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit) 或更高的版本
前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
查看自己的内核
uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
1)删除老版本(假设你已经安装过Docker)
$ sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
2)如果没安装过c环境先安装c
yum -y install gcc
yum -y install gcc c++
3)官网要求必须安装的软件包
sudo yum install -y yum-utils
device-mapper-persistent-data
lvm2
4)镜像下载地址
官方提供:(需要翻墙)
sudo yum-config-manager --add-repo
https://download.docker.com/linux/centos/docker-ce.repo
国内提供:(速度较快)
sudo yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5)安装Docke社区版
sudo yum install docker-ce
6)启动Docker
sudo systemctl start docker
7)运行hello-world
sudo docker run hello-world
3.Docker常用命令
可能包含中文字符自己注意修改
- 帮助命令
查看Docker版本:docker version
查看Docker详情:docker info
查看Docker帮协:docker --help - 镜像命令
1)查看镜像:docker images [option]
option:
-a 列出本地所有镜像
-q 只展示列出镜像的ID
–digests 镜像摘要
–trunc 镜像完整信息
2)查询镜像:docker search [option] 镜像ID
option:
-s number 查询点赞数多余number的镜像
–no-trunc 查询出的镜像的完整信息
–automated 查询可以自动构建的镜像
3)下载镜像:docker pull 镜像名:[默认:latest->最新版本,可指定自己想要获取的版本标签]
4)删除镜像:
删除单个:docker rmi -f 镜像名 :[默认:latest->最新版本,可指定自己想要删除的版本标签]
删除多个:docker rmi -f 镜像名1 :[默认:latest->最新版本,可指定自己想要删除的版本标签] 镜像名2:[默认:latest->最新版本,可指定自己想要删除的版本标签]…
删除全部镜像:docker rmi $(docker images -aq) - 容器命令
1)启动并运行容器:docker run [option] 镜像名/ID
option:
–name 为容器起一个新的名字,不写则用docker默认生成
-d 后台启动容器并返回容器的ID(启动后的容器如没有其他操作则自动停止运行)
-i 以交互模式运行容器(与t一同使用)
-t 为容器重新分配一个伪输入中断
-P 随即端口映射
-p 指定端口映射
-p:ip:hostPort:containerPort
-p:ip::containerPort
-p:hostPort:containerPort
2)容器停止退出:exit(停止退出)ctrl+q+p (强制退出)
3)查看容器:docker ps [option]
option:
-l 之前运行的容器(上一个运行的容器)
-n numbre 之前number个运行的容器
-a 运行过的所有容器
-q 只显示查询出的容器的ID
–no-trunc 查看完整信息
4)启动容器:docker start 容器ID
5)重启容器:docker restart 容器ID
6)停止容器:docker stop 容器ID
7)强制停止容器:docker kill 容器ID
8) 删除容器:
删除单个:docker rm -f 容器ID
删除多个:
docker rm -f $(docker ps -aq)
docker ps -aq|xargs docker rm
4.重要命令
- 启动守护式容器
docker run -d 镜像名 - 查看容器日志
docker logs -t -f --tail 3 容器ID
-t 时间戳
-f 追踪查看
–tail number 查看末尾number个 - 查看容器内部运行进程
docker top 容器ID - 查看容器内部细节
docker inspect 容器ID - 重新进入容器
docker attach 容器ID - 在宿主机上指定容器要执行的命令
docker exec -it 容器ID /bin/bash | 其他命令 - attach与exec两者的区别
attach 直接进入容器启动命令的终端,不会启动新的进程
exec 在容器打开新的终端并且启动新的进程 - 拷贝容器中的数据到宿主机
docker cp 容器ID:(想要拷贝数据的容器内部全路径)
官方结构图
暂时记录到这里后续追加。