docker_01_知识梳理

1.docker

docker本质: 打包装箱,每个箱子都是隔离的,可以打包运行环境,一键运行程序的容器化技术。

2.容器与虚拟机比较

比较Docker和虚拟化技术的不同
1.传统虚拟机, 虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
2. 容器内的应用直接运行在宿主机的内部,容器是没有自己的内核的,也没有虚拟硬件,所以轻便
3. 每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响

应用更快速的交互和部署
1.每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响
2. 更便捷的升级和扩缩容
3. 更简的系统运维
4. 更高效的计算资源利用
5.与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

2.名词解释

镜像(iamge):
Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 ===> run ===> tomcat01容器, 通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)

容器(container):
1.Docker利用容器技术,独立运行一个或者一组应用, 通过镜像来创建的
2. 启动,停止,删除,基本命令!
3. 就目前可以把这个容器理解为一个建议的linux系统

仓库(repository)
1.存放镜像的地方
2.Docker Hub(默认是国外的)
3.阿里云,都有容器服务(配置镜像加速!)

2. 阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://0wrdwnn6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.安装docker

卸载旧版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装依赖

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

添加yum源

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

安装最新的docker

$ sudo yum install docker-ce docker-ce-cli containerd.io

选择安装docker版本

$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64            3:20.10.7-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.7-3.el7                    @docker-ce-stable
docker-ce.x86_64            3:20.10.6-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.5-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.4-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.3-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.2-3.el7                    docker-ce-stable 

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

 #启动 停止 重启Docker。
$ service docker start
$ service docker stop
$ service docker restart

#开机自启docker
$ systemctl enable docker

#卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
#删除资源
rm -rf /var.lib/docker 
3.安装docker Run的运行过程

在这里插入图片描述在这里插入图片描述

4.镜像相关命令

1.1 查看镜像

docker images
--all , -a      # 列出所有镜像
--quiet , -q    # 只显示镜像的id

1.2 搜索镜像
如果你需要从网络中查找需要的镜像,可以通过以下命令搜索

docker search 镜像名称

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

docker pull 镜像名称

1.4 删除镜像
按镜像ID删除镜像

docker rmi 镜像ID
#删除所有镜像
docker rmi `docker images -q`

2 容器相关命令
2.1 查看容器

#查看正在运行的容器
docker ps
#查看所有容器
docker ps –a
#查看最后一次运行的容器
docker ps –l
#查看停止的容器
docker ps -f status=exited
# 删除指定容器
docker rm -f 容器id           
# 删除所有容器          
docker rm -f $(docker ps -aq)    
# 删除所有的容器
docker ps -a -q|xargs docker rm -f

2.2 创建与启动容器
创建容器常用的参数说明:
创建容器命令:

docker run [可选参数] image
 
# 参数说明
--name=“Name”   容器名字    tomcat01    tomcat02    用来区分容器
-d      后台方式运行
-it     使用交互方式运行,进入容器查看内容
-p      指定容器的端口     -p 8080:8080
    -p  ip:主机端口:容器端口
    -p  主机端口:容器端口(常用)
    -p  容器端口
    容器端口
-p      随机指定端口
 
 
# 测试,启动并进入容器
# docker run -it centos /bin/bash
[/]# ls   # 查看容器内的centos,基础版本,很多命令是不完善的
bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
 
# 从容器中退回主机
[/]# exit
exit
[/]# ls
bin   dev  fanfan  lib    lost+found  mnt  proc  run   srv  tmp  var
boot  etc  home    lib64  media       opt  root  sbin  sys  usr

(1)交互式方式创建容器

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

这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态
退出当前容器
exit

(2)守护式方式创建容器:

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

登录守护式容器方式:

docker exec -it 容器名称 (或者容器ID)  /bin/bash

2.3 停止与启动容器
停止容器:

docker stop 容器名称(或者容器ID)

启动容器:

docker start 容器名称(或者容器ID)

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

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

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

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

2.5 目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

#创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如:
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

如果你共享的是多级的目录,可能会出现权限不足的提示。
这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题

2.6 查看容器IP地址
我们可以通过以下命令查看容器运行的各种数据

docker inspect 容器名称(容器ID) 

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

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

2.7 删除镜像

# docker rmi -f IMAGE ID                        # 删除指定镜像
# docker rmi -f IMAGE ID1 IMAGE ID2 IMAGE ID3   # 删除多个镜像
#  docker rmi -f $(docker images -aq)           # 删除所有镜像

2.8 查看容器日志

docker logs -tf --tail number 容器id
3.docker 安装Tomcat
# 官方的使用
docker run -it --rm tomcat:9.0
 
# 我们之前的启动都是后台的,停止了容器之后, 容器还是可以查到,docker run -it --rm 一般用来测试,用完就删
 
# 下载再启动
docker pull tomcat
 
# 启动运行
docker run -d -p 3344:8080 --name tomcat01 tomcat
 
# 测试访问没有问题
 
# 进入容器
docker exec -it tomcat01 /bin/bash
 
# 发现问题:1.linux命令少了, 2. webapps下内容为空,阿里云净吸纳过默认是最小的镜像,所有不必要的都剔除了,保证最小可运行环境即可
4.docker的可视化界面 portatiner
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
 
# 测试
[root@iZ2zeg4ytp0whqtmxbsqiiZ home]# curl localhost:8088
 
# 外网访问 http://ip:8088

在这里插入图片描述

4.Docker 镜像加载原理

Unionfs(联合文件系统): Union文件系统( Unionfs)是一种分层、轻量級并且高性能的文件系统 ,它支持对文件系统的修改作为一次提交来一层层的加下载的时候,会出现多个层次的下载),同时可以将不同目录挂载到同一个虚拟文件系统下 unite several directories into a single virtualfilesystem)。 Union文件系统是 Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性: 一次同时加载多个文件系统,但从外面看起来,只能看到个文件系统,联合加载会把各层文件系统加起来,这样最终的文件系统会包含所有底层的文件和目录。
在这里插入图片描述

5.docker commit

1.安装Tomcat容器,复制webapps.dist到webapps下提交修改后的Tomcat容器为镜像

[root@admin ~]#  docker commit -a='hdh' -m='add webapps' 86ce720b9e3e tomcat1.1.0
sha256:20e82f35134bee485523dacdb1dd070f86f51161a3f5a7981c60a5b4d530461c

在这里插入图片描述
我们会发现提交的Tomcat后生成的镜像会比我们下载的镜像大一点。
提交镜像的原理:
我们下载的镜像是只读的,我们的操作实质上是在容器上又加了一层,最后commit的时候实际上是打包后的镜像。
在这里插入图片描述
合并提交
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值