docker概述及基本操作

docker概述:
docker是在linux容器里运行应用的开源工具,是一种轻量级的虚拟机。docker的容器技术可以在一台主机上轻易地为任何应用创建一个轻量级、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化重新部署、调试的繁琐重复性工作。
docker的宗旨“一次封装,到处运行”,
docker三大核心概念:镜像、容器、仓库

docker容器与传统虚拟化:

特性 docker容器 传统虚拟机
启动速度 秒级 分钟级
计算能力损耗 几乎无 损耗50%左右
性能 接近原生 弱于
系统支持量(单机) 上千个 几十个
隔离性 资源限制 完全隔离

docker核心概念:

名称 描述
镜像 docker的镜像是创建容器的基础,类似于虚拟机的快照,也可以理解为是一个面向docker容器引擎的只读模板
容器 docker的容器是从镜像创建的运行实例,它可以启动、停止、删除。所创建的每一个容器都是相互隔离的、互不可见的。
仓库 docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公共仓库或者私有仓库

安装docker:

# centos 7.3
# 部署阿里源
[root@localhost ~]wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 部署阿里docker源
# step 1: 安装必要的一些系统工具
[root@localhost ~]sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
[root@localhost ~]sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
[root@localhost ~]sudo yum makecache fast
[root@localhost ~]sudo yum -y install docker-ce
# Step 4 阿里容器镜像加速 需要自行注册阿里云用户
访问 https://cr.console.aliyun.com/cn-shanghai/instances/mirrors
# Step 5 还需要修改这个地方,可能会警告原因就不解释了
{
  "registry-mirrors": ["https://l4lesu78.mirror.aliyuncs.com"],
  "exec-opts":["native.cgroupdriver=systemd"]
}        
#修改内核
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
                                                                                                                                       
# Step 6: 开启Docker服务
[root@localhost ~]sudo service docker start
# 此时docker基本可以运行测试
Step 4步骤

docker概述及基本操作_第1张图片

docker基本操作:

# 查看版本
[root@localhost ~]docker version
# 这个更详细一点
[root@localhost ~]docker info
# 探索镜像 (有很多)
[root@localhost ~]docker search nginx #(自行选择)
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        14291               [OK]                
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1941                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   801                                     [OK]

# 获取镜像(因为我下载过所以没有显示层)
[root@localhost ~]docker pull nginx

Using default tag: latest
latest: Pulling from library/nginx
Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Status: Image is up to date for nginx:latest
docker.io/library/nginx:latest

#查看镜像信息
[root@localhost ~]docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               test                8a5b7804badd        50 minutes ago      133MB
bbox                v1                  b97242f89c8a        6 days ago          1.23MB
nginx               latest              f6d0b4767a6c        6 days ago          133MB

#方便使用也可以为镜像添加新的标签
[root@localhost ~]# docker tag bbox:v1 bbox1:v2
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               test                8a5b7804badd        53 minutes ago      133MB
bbox1               v2                  b97242f89c8a        6 days ago          1.23MB
bbox                v1                  b97242f89c8a        6 days ago          1.23MB
nginx               latest              f6d0b4767a6c        6 days ago          133MB

#删除镜像(名称、ID都可以)
[root@localhost ~]# docker rmi bbox1:v2 
Untagged: bbox1:v2
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               test                8a5b7804badd        54 minutes ago      133MB
bbox                v1                  b97242f89c8a        6 days ago          1.23MB
nginx               latest              f6d0b4767a6c        6 days ago          133MB

#存出和载入镜像
#存出
[root@localhost ~]# docker save -o testtar bbox:v1 
[root@localhost ~]# ls
anaconda-ks.cfg  docker-repo  docker_rpm.tgz  kcc01  testtar
#载入
[root@localhost ~]# docker load -i testtar 
0064d0478d00: Loading layer [==================================================>]   1.45MB/1.45MB
Loaded image: bbox:v1
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               test                8a5b7804badd        58 minutes ago      133MB
bbox                v1                  b97242f89c8a        6 days ago          1.23MB
nginx               latest              f6d0b4767a6c        6 days ago          133MB

#上传镜像(需要账号自行注册)
[root@localhost ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: docker
Password: 
Email:xxx@xxx.com
[root@localhost ~]# docker push bbox:v1 #上传

#启动实例(临时的实例 运行结束即停止 可以-it 更换 -d 后台运行 --name xxx(如果不指定名称则随机))
[root@localhost ~]# docker run -it nginx /bin/sh
[root@localhost ~]# docker exec -it nginx /bin/bash #进入实例
# ls
bin  boot  dev	docker-entrypoint.d  docker-entrypoint.sh  etc	home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# 

#查看容器状态
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
6832c2aa41e9        nginx:latest        "/docker-entrypoint.…"   About an hour ago   Up About an hour    80/tcp              nginx1
2ad47fa81071        nginx:latest        "/docker-entrypoint.…"   About an hour ago   Up About an hour    80/tcp              nginx

#容器删除(可以使名称也可以是ID 此处是随机名称)
[root@localhost ~]# docker rm funny_robinson 
funny_robinson

docker资源控制:

#对CPU使用率控制
[root@localhost ~]# docker run -it --cpu-quota 20000 nginx:latest /bin/bash
root@75f3e6a9a5c1:/# cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us 
20000

#限制CPU内核使用(0代表第一个内核以此类推)
[root@localhost ~]# docker run -it --cpuset-cpus 0 nginx:latest /bin/bash
root@60a1c4fd7146:/# cat /sys/fs/cgroup/cpuset/cpuset.cpus 
0

#对内存使用限制(大约200m)
[root@localhost ~]# docker run -it -m 200m nginx:latest /bin/bash
root@e1310b644715:/# cat /sys/fs/cgroup/memory/memory.limit_in_bytes 
209715200

#更多选项查阅help
[root@localhost ~]# docker --help

你可能感兴趣的:(docker,运维,linux,centos,服务器)