文章目录
云计算核心:Docker
一、安装
1.Docker加速器
使用Aliyun Docker Yum源安装Docker
yum install -y yum-utils device-mapper-persistent-data lvm2 git
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
2.安装指定版本
查看版本
yum list docker-ce --showduplicates
 
安装较旧版本(比如Docker 17.03.2) :
 需要指定完整的rpm包的包名,并且加上–setopt=obsoletes=0 参数:
yum install -y --setopt=obsoletes=0 \
   docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
   docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
 
安装最新版
yum install docker-ce -y
 
二、启动docker
systemctl start docker 
systemctl enable docker
 
查看docker 版本
docker -v
 
查看docker 启动状态
docker version
 
查看docker 运行状态
docker info
 
三、镜像管理
搜索镜像 [任意关键词]
这种方法只能用于官方镜像库
docker search centos
 
按星级搜索镜像
查找 star 数至少为 100 的镜像,默认不加 s 选项找出所有相关 ubuntu 镜像
docker search ubuntu -f stars=100  
 
拉取镜像
docker pull centos
 
查看本地镜像
docker images
 
四、 使用镜像
1.使用阿里云镜像源 加速镜像下载
需要登录阿里云服务器 不需要有云服务器
具体操作摘自 某位运维开发的文章 把 Docker 容器当做虚拟机使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://********.mirror.aliyuncs.com"]
}
EOF
 
2.启动镜像
sudo systemctl daemon-reload
sudo systemctl restart docker
 
3.查看镜像详情
docker ps -a
 
4.删除镜像
删除一个或多个,多个之间用空格隔开,可以使用镜像名称或id
docker rm docker-1
 
强制删除:–force
如果镜像正在被使用中可以使用–force强制删除
docker rm docker-1 --force
 
删除所有镜像
docker rm $(docker images -q)
 
只查看所有镜像的id
docker images -q 
 
查看镜像制作的过程,相当于Dockerfile
docker history daocloud.io/ubuntu
 
给镜像打tag
docker tag daocloud.io/ubuntu   daocloud.io/ubuntu:v1
 
5.进入容器
docker run -it centos
 
6.关闭容器
docker stop  docker-1
 
五、什么是Docker?[演示]
模拟一个文件系统
[root@docker ~]# cd
[root@docker ~]# mkdir t
#模拟一个文件系统
[root@docker ~]# mkdir t/{bin,lib64,etc,home,root}
[root@docker ~]# ls t/
bin  etc  home  lib64  root
#把ls命令放到我的文件系统内
[root@docker ~]# cp /usr/bin/ls t/
[root@docker ~]# ls t/
bin  etc  home  lib64  ls  root
[root@docker ~]# ldd /usr/bin/ls |grep -oP '/lib64/\S+'
/lib64/libselinux.so.1
/lib64/libcap.so.2
/lib64/libacl.so.1
/lib64/libc.so.6
/lib64/libpcre.so.1
/lib64/libdl.so.2
/lib64/ld-linux-x86-64.so.2
/lib64/libattr.so.1
/lib64/libpthread.so.0
[root@docker ~]# ldd /usr/bin/ls |grep -oP '/lib64/\S+' | cp  `xargs` t/lib64/
[root@docker ~]# ls t/lib64/
ld-linux-x86-64.so.2  libattr.so.1  libc.so.6   libpcre.so.1     libselinux.so.1
libacl.so.1           libcap.so.2   libdl.so.2  libpthread.so.0
[root@docker ~]# ls t/
bin  etc  home  lib64  ls  root
[root@docker ~]# chroot t /ls
bin  etc  home  lib64  ls  root
#把bash命令放到我的文件系统内
[root@docker ~]# cp /bin/bash t/
[root@docker ~]# ldd /bin/bash |grep -oP '/lib64/\S+' |cp  `xargs` t/lib64/
[root@docker ~]# chroot t /bash 
bash-4.2# echo "hah"
hah
[root@docker ~]# tar -czf t.tar t
[root@docker ~]# ls t.tar
t.tar
#这里的 t.tar 就是一个 Docker [容器]
 
六、Docker容器的制作
1.创建新容器但不启动
需要持续交互 使用 -it
docker create -it daocloud.io/library/centos:5 /bin/bash
 
更多参数
  -i  
   捕获标准输入输出
  -t  
   分配一个终端或控制台
  -d
   后台启动 
  --restart=always  
   容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭  
   也适用于create选项    
  --rm
   默认情况下,每个容器在退出时,它的文件系统也会保存下来,这样一方面调试会方便些,因为你可以通过查看日志等方式来确定最终状态。另一方面,也可以保存容器所产生的数据。
    但是当你仅仅需要短暂的运行一个容器,并且这些数据不需要保存,你可能就希望Docker能在容器结束时自动清理其所产生的数据。这个时候就需要--rm参数了。注意:--rm 和 -d不能共用
  容器名称
  --name= Assign a name to the container   
          --为容器分配一个名字,如果没有指定,docker会自动分配一个随机名称
          是docker run子命令的参数
  可以通过三种方式调用容器命名:
  1)使用UUID长命名("f78375b1c487e03c9438c729345e54db9d20cfa2ac1fc3494b6eb60872e74778")
  2)使用UUID短Id("f78375b1c487")
  3)使用Name("docker-1") 
    这个UUID标识是由Docker deamon生成的。
  如果你在执行docker run时没有指定--name,那么deamon会自动生成一个随机字符串UUID。
  但是对于一个容器来说有个name会非常方便,当你需要连接其它容器时或者类似需要区分其它容器时,使用容
  器名称可以简化操作。无论容器运行在前台或者后台,这个名字都是有效的。
保存容器PID equivalent:
如果在使用Docker时有自动化的需求,你可以将containerID输出到指定的文件中(PIDfile),类似于某些应用程序将自身ID输出到文件中,方便后续脚本操作。
--cidfile="": Write the container ID to the file
 
启动容器
启动容器必须需要启动容器的时候需要有 -d 参数
否则不会启动成功
docker start docker-1
 
停止容器
docker stop docker-1
docker kill docker-1   # 强制终止容器
 
查看所有容器
docker ps -a
 
-a 所有
查看已启动容器
docker ps
 
查看所有容器id
docker ps -a -q
 
2.自启动
容器随docker engine自启动
因为在重启docker的时候默认容器都会被关闭
docker run -it --restart=always centos /bin/bash
 
3.查看容器详细信息
docker inspect 0  #这里0 是我机器上运行的唯一标识id
 
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
04270d042318   centos    "/bin/bash"   2 minutes ago    Up 2 minutes              docker-3
e63dca6e4930   centos    "/bin/bash"   23 minutes ago   Up 15 seconds             docker-1
[root@docker ~]# docker inspect 0
[
    {
        "Id": "04270d0423180793d5a2959124818534911b4d5abca6d21f5d1d2cf721cf2bc9",
        "Created": "2021-01-12T08:49:40.365041161Z",
        "Path": "/bin/bash",
...
 
根据格式删除容器
docker rm $(docker ps -qf status=exited)
 
查看系统历史命令
docker logs docker-1
 
查看所有进程
docker容器中的top 命令
 docker top docker-1
 
复制
docker cp xxxx
 
4.创建对应端口的应用服务
docker run -d -p 8090:80 --name nginx nginx
docker run -d -p 6379:80 --name redis redis
 
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS             PORTS                            NAMES
68c99094b335   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 5 seconds       0.0.0.0:8090->80/tcp             nginx
560de3c6cbff   redis     "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes       6379/tcp, 0.0.0.0:6379->80/tcp   redis
e63dca6e4930   centos    "/bin/bash"              2 hours ago     Up About an hour                                    docker-1
 
5.创建任务 exec
#交互型
docker exec -itd docker-1 touch 1.txt
docker exec  docker-1 mkdir test
 
#后台型
docker exec  docker-1 touch 2.txt
 
#进入容器
docker exec -it e63 bash
 
6.查看容器内发生改变的文件
包括文件的创建、删除和文件内容的改变都能看到
[root@docker ~]# docker diff docker-1
A /test
A /2.txt
A /1.txt
 
7.连接容器[进入容器]
docker attach docker
 
或者
docker exec -it  e63 
 
进入
[root@docker ~]# docker  attach docker-1
[root@e63dca6e4930 /]# ls
1.txt  bin  etc   lib  lost+found  mnt  proc run   srv  test  usr
2.txt  dev  home  lib64  media      opt  root sbin  sys  tmp  var
 
七、CPU 限制
先写一个脚本,让他无限占用cpu
[root@localhost ~]# cat /root/shark.sh 
while true
do
  true
done
 
然后执行他 cpu会飙升到100%
[root@localhost ~]# sh /root/shark.sh  &
[1] 69950
 
查看进程 记住进程号
[root@localhost ~]# top
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                          
 69950 root      20   0  113280   1196   1020 R 70.8  0.1   0:32.11 sh  
 
进入cpu配置文件 创建一个新文件夹
[root@localhost cpu]# mkdir t
[root@localhost t]# pwd
/sys/fs/cgroup/cpu/t
[root@localhost t]# echo 20000 >  cpu.cfs_quota_us  # 20000 表示最高占用cpu不超过20% 自己视情况而定
[root@localhost t]# echo  64514 > tasks  # 把刚刚的进程号写入这个文件内
#cpu的负载就会到达你所期望的值
 
八、卸载删除已安装Docker
yum remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-selinux \
        docker-engine-selinux \
        docker-engine
                
                  
                  
                  
                  
                            
本文围绕云计算核心Docker展开,详细介绍了其安装方法,包括使用加速器和指定版本安装;阐述了启动、镜像管理与使用的操作,如拉取、删除镜像等;说明了容器的制作过程,涵盖创建、自启动等;还提及CPU限制和卸载操作,为运维人员提供全面指导。
          
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					2150
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            