01_Docker基础
一、Dokcer
中文:码头工人
在当前技术领域。容器虚拟化技术 还不太成熟 但是是未来的一种流行趋势。也是一种势在必行的发展技术。
容器不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口。这降低了运行单个容器所需的开销,也使得宿主机中可以运行更多的容器。
容器虚拟化的是操作系统而不是硬件,容器之间是共享同一套操作系统资源的。虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统。
Docker版本:
社区版
企业版
二、安装:在Centos
前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为2.6.32-431 或者更高版本。
- 卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装依赖
yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 设置镜像库
官方镜像(不推荐)
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
阿里镜像(推荐)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum软件包索引
yum makecache fast
- 安装dokcer CE
yum install docker-ce docker-ce-cli containerd.io
- 启动docker容器
systemctl start docker
- 测试
docker run hello-world
- docker的其他命令
查看版本信息
docker version
查看docker的状态
systemctl status docker
查看docker的详细信息
docker info
docker的启动
systemctl start docker
docekr 停止
systemctl stop docker
重启
systemctl restart docker
将docker 设为开机启动的
systemctl enable docker
- docker的卸载
yum remove docker-ce
rm -rf /var/lib/docker
三、docker的架构
四、docker镜像操作
Docker 镜像是容器的基础。镜像是一个有序集合,其中包含根文件系统更改和在容器运行时中使用的相应执行参数。镜像通常 包含堆叠在彼此之上的联合分层文件系统。镜像没有状态并且始终不会发生更改。 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
4.1. 查找镜像
docker search centos
4.2. 拉取镜像
docker pull 镜像名称:[镜像版本,可省略 省略则为最新版]
为了解决国内下载过慢 配置阿里的镜像加速器
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
docker pull centos
4.3.查看容器中所有的镜像
4.4. 删除镜像:
docker rmi 镜像名/id #删除单个镜像
docker rmi 镜像名/id 镜像名/id 镜像名/id #删除多个镜像
docker rmi -f $(docker images -qa) #删除所有镜像
五、容器的操作
容器是docker镜像在运行时产生的对象实例。 一个镜像可以产生多个容器
要产生容器 必须要先有镜像。
5.1.创建容器
docker run [options] image command [ARG...]
OPTIONS说明(常用):有些是一个减号,有些是两个减号
–name=“容器新名字”: 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
5.2. 查看容器
5.3. 进入容器
方式一:
方式二:
5.4. 启动容器
docker start c3
5.5. 停止容器
docker stop c3
5.6.退出容器
exit 容器停止退出(与进入方式有关)
ctrl+p+Q 容器不停止退出
5.7. 获取容器/镜像的元数据
docker inspect c3
5.8. 删除容器
前提:删除不能删除运行中的容器
docker rm 容器名称/id #删除一个容器
docker rm 容器名称/id 容器名称/id 容器名称/id 删除多个容器
docker rm -f $(docker ps -qa)) #删除所有容器
5.9.查看容器的日志
docker logs 容器名称/id
5.10. 文件拷贝
从宿主机到容器
docker cp test.txt c1:/root
docker cp 需要拷贝的目录或文件 容器名称/id:目标路径
从容器到宿主机
[root@localhost ~]# docker cp c1:/root/hello.txt /root
5.11. 目录挂载
在创建容器的时候 将宿主机的目录与容器内的目录进行映射,这样之后 就可以通过修改宿主机的目录来影响容器内对应的目录
docker run -itd --name=c2 -v /opt:/usr/local/testopt centos
#将宿主机中的opt目录和容器内的/usr/local/testopt目录做一个映射 也成为挂载
如果挂载的时多级目录 有可能会出现权限不足的问题
这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题
docker run ‐itd ‐‐privileged=true --name=c3 -v /opt:/usr/local/testopt