Docker 基本概念

- 什么是Docker?

Docker是一个轻量级的“虚拟机”,容器完全使用沙箱机制,相互之间不会有任何接口。是Linux容器里运行应用的开源工具。

- Docker与虚拟机的区别

- Docker主要构成
-    Docker Client   客户端
-   Docker Daemon   守护进程
-   Docker Images   镜像
-   Docker Container    容器
-   Docker Registry 仓库
- Docker运作流程
Client ——> Daemon ——> Images (or Registry ——> Images)——> Containers

Client客户端下达指令,执行操作,下达到daemon守护进程,守护进程收到之后,如果想构建images镜像,守护进程直接把当前的容器环境制作成images镜像,images镜像不仅可以从当前的环境制作images镜像,也可以从指定的一个registry仓库中进行下载(也称为拉取),registry仓库也分为公共的官方仓库(便于全球使用docker的用户使用加载),和私有搭建的仓库。利用不同的imagers镜像直接生成不同的 containers容器。

- Docker的核心概念

Docker Images 镜像
Docker Container 容器
Docker Registry 仓库

- Docker 环境安装

首先关闭防火墙

systemctl stop firewalld #停止防火墙
systemctl disable firewalld #关闭防火墙自启动
setenforce 0    #关闭核心防护
#永久关闭核心防护功能
vim /etc/selinux/config
#把第7行的enforcing修改成disabled
#用正则修改
sed -i "7s/enforcing/disabled" /etc/selinux/config | cat /etc/selinux/config
  • 安装部署Docker的环境包
yum install -y yum-utils device-mapper-persistent-data lvm2
#这里用的是阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#在阿里云的yum源中下载decker-ce(社区版)repo配置文件
#下载完repo配置文件之后,才能安装Docker-ce
#安装Docke-CE
yum install -y docker-ce
systemctl start docker.service      #打开docker服务
systemctl enable docker.service     #设置docker开机自启动服务
Docker 镜像操作
  • 镜像加速

    • 下列的"http://…"里的镜像加速地址可以通过阿里云官方服务器申请得到 https://help.aliyun.com/document_detail/60750.html
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://..."]
}
EOFsystemctl daemon-reload      #重新加载
systemctl restart docker    #重新启动docker服务
网络优化
vim /etc/sysctl.conf
net.ipv4.ip_forward=1                                  #开启数据包转发功能echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf     #开启数据包转发功能service network restart                                   #重启网络服务
systemctl restart docker                                #重启docker
镜像常用命令
witch docker #查找存放路径
[root@192 ~]# which docker
/usr/bin/docker
docker version #查看版本
Client: Docker Engine - CommunityVersion:           19.03.8API version:       1.40Go version:        go1.12.17Git commit:        afacb8bBuilt:             Wed Mar 11 01:27:04 2020OS/Arch:           linux/amd64Experimental:      falseServer: Docker Engine - CommunityEngine:Version:          19.03.8API version:      1.40 (minimum version 1.12)Go version:       go1.12.17Git commit:       afacb8bBuilt:            Wed Mar 11 01:25:42 2020OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.2.13GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429runc:Version:          1.0.0-rc10GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dddocker-init:Version:          0.18.0GitCommit:        fec3683
docker search 名称 #搜索镜像
[root@192 docker]# docker search nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        12976               [OK]
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1773                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   764                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   105
bitnami/nginx                      Bitnami nginx Docker Image                      82                                      [OK]
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   68                                      [OK]
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   51
......内容省略
docker pull 名称 #下载镜像
[root@192 docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
c499e6d256d6: Pull complete
74cda408e262: Pull complete
ffadbd415ab7: Pull complete
Digest: sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
docker images #查看已下载镜像
[root@192 docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        2 weeks ago         127MB
docker inspect 镜像ID #获取镜像信息
[root@192 overlay2]# docker inspect ed21b7a8aee9
[{"Id": "sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291","RepoTags": ["nginx:latest"],"RepoDigests": ["nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596"],"Parent": "","Comment": "","Created": "2020-03-31T03:19:30.487069362Z","Container": "5c86b143cf5caec0aed5c331922c243f00600152ec0e9ecbe8531771562e72b8","ContainerConfig": {"Hostname": "5c86b143cf5c","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},
......内容省略
docker tag 镜像名称:镜像标签 镜像名称:镜像标签 #添加镜像标签
[root@192 overlay2]# docker tag nginx:latest nginx:web
[root@192 overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        2 weeks ago         127MB
nginx               web                 ed21b7a8aee9        2 weeks ago         127MB
docker rmi 镜像名称:镜像标签 #删除镜像
[root@192 overlay2]# docker rmi nginx:web
Untagged: nginx:web
[root@192 overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        2 weeks ago         127MB
docker saved -o 文件名 镜像名 #镜像输出
[root@192 overlay2]# mkdir /abc
[root@192 overlay2]# cd /abc
[root@192 abc]# ls
[root@192 abc]# docker save -o nginx nginx:latest
[root@192 abc]# ls
nginx
[root@192 abc]# ls -lh nginx
-rw-------. 1 root root 125M 4月  15 07:48 nginx
docker load < 文件名 #镜像导入
[root@192 abc]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        2 weeks ago         127MB
[root@192 abc]# ls
nginx
[root@192 abc]# ls -lh nginx
-rw-------. 1 root root 125M 4月  18 10:24 nginx
[root@192 abc]# docker rmi ed21b7a8aee9
Untagged: nginx:latest
Untagged: nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596
Deleted: sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291
Deleted: sha256:8a305f371a6c3c445a1dfc500c1364743868a269ab8cdaf95902692e82168352
Deleted: sha256:d079ef06ec1f10a8050887365f9a940b39547ba6bcc46b16a463e740984f3223
Deleted: sha256:c3a984abe8a88059915bb6c7a1d249fd1ccc16d931334ac8816540b0eb686b45
[root@192 abc]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@192 abc]# docker load < nginx
c3a984abe8a8: Loading layer  72.48MB/72.48MB
99134ec7f247: Loading layer  58.11MB/58.11MB
d37eecb5b769: Loading layer  3.584kB/3.584kB
Loaded image: nginx:latest
[root@192 abc]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ed21b7a8aee9        2 weeks ago         127MB
docker login #登录
docker push #上传
  • 容器常用命令

docker create -it 镜像名称 终端 #容器创建

  • -i 让容器的标准输入保持打开
  • -t 让docker分配一个伪终端
[root@192 abc]# docker create -it nginx:latest /bin/bash
b64fae63823860866a2f24ef8dadfd6ccadb19dda42568b14d8c2e066f928819
docker ps -a #查看容器状态
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b64fae638238        nginx:latest        "/bin/bash"         4 seconds ago       Created                                 vibrant_swartz
docker start 容器ID #启动容器
[root@192 abc]# docker start b64fae638238
b64fae638238

查看状态为up

[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b64fae638238        nginx:latest        "/bin/bash"         3 minutes ago       Up 7 seconds        80/tcp              vibrant_swartz
启动执行命令查看系统根目录
docker run 镜像 -c 所需要的指令
  • -c command执行指令
    docker run的执行过程包括了pull下载、create创建、start启动
    如果有镜像,不会下载,直接加载这个镜像;如果没有镜像,会找仓库下载这个镜像
[root@192 abc]# docker run centos:7 /usr/bin/bash -c ls /
Unable to find image 'centos:7' locally
7: Pulling from library/centos
ab5ef0e58194: Already exists
Digest: sha256:4a701376d03f6b39b8c2a8f4a8e499441b0d567f9ab9d58e4991de4472fb813c
Status: Downloaded newer image for centos:7
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@192 abc]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              e791337790a6        46 hours ago        127MB
centos              7                   5e35e350aded        5 months ago        203MB
[root@192 abc]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              e791337790a6        46 hours ago        127MB
centos              7                   5e35e350aded        5 months ago        203MB
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
f6a800a8acc9        centos:7            "/usr/bin/bash -c ls…"   About a minute ago   Exited (0) About a minute ago                       busy_ardinghelli
b64fae638238        nginx:latest        "/bin/bash"              11 minutes ago       Up 8 minutes                    80/tcp              vibrant_swartz
docker stop 容器ID #终止运行
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
f6a800a8acc9        centos:7            "/usr/bin/bash -c ls…"   About a minute ago   Exited (0) About a minute ago                       busy_ardinghelli
b64fae638238        nginx:latest        "/bin/bash"              11 minutes ago       Up 8 minutes                    80/tcp              vibrant_swartz
[root@192 abc]# docker stop b64fae638238
b64fae638238
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS               NAMES
f6a800a8acc9        centos:7            "/usr/bin/bash -c ls…"   3 minutes ago       Exited (0) 3 minut   busy_ardinghelli
b64fae638238        nginx:latest        "/bin/bash"              13 minutes ago      Exited (0) 7 secon   vibrant_swartz
docker run -d 镜像名称 终端 -c 执行命令 #持续在后台执行
[root@192 abc]#  docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"
425906050c12ccd3a3bfd4f43add8b11de4f8238c14bc5ee2da0aa8937e6efb0
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
425906050c12        centos:7            "/bin/bash -c 'while…"   5 seconds ago       Up 4 seconds                                   eager_payne
第一种进入容器的方式
docker run -it 容器名称
[root@192 abc]# docker run -ti nginx:latest /bin/bash
root@fcd326a8e57a:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
第二种进入容器的方式
docker start 容器ID
当容器处于up状态的时候用exec进入
docker exec -it 容器ID 终端
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
b64fae638238        nginx:latest        "/bin/bash"              18 minutes ago      Exited (0) 5 minutes ago                         vibrant_swartz
[root@192 abc]# docker start b64fae638238
b64fae638238
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
b64fae638238        nginx:latest        "/bin/bash"              19 minutes ago       Up 4 seconds                    80/tcp              vibrant_swartz
[root@192 abc]# docker exec -it b64fae638238 /bin/bash
root@b64fae638238:/#
root@b64fae638238:/# exit
exit
[root@192 abc]#
docker export 容器ID > 文件名 #容器导出
[root@192 abc]# ls
nginx
[root@192 abc]# docker export b64fae638238 > nginx_c
[root@192 abc]# ls
nginx  nginx_c
docker rm 容器ID #删除容器
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
c875a3516d3e        nginx:latest        "/bin/bash"              12 minutes ago      Exited (0) 12 minutes ago                         heuristic_jennings
425906050c12        centos:7            "/bin/bash -c 'while…"   14 minutes ago      Exited (137) 13 minutes ago                       eager_payne
f6a800a8acc9        centos:7            "/usr/bin/bash -c ls…"   20 minutes ago      Exited (0) 20 minutes ago                         busy_ardinghelli
b64fae638238        nginx:latest        "/bin/bash"              29 minutes ago      Up 11 minutes                 80/tcp              vibrant_swartz
[root@192 abc]# docker rm 425906050c12
425906050c12
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
c875a3516d3e        nginx:latest        "/bin/bash"              12 minutes ago      Exited (0) 12 minutes ago                       heuristic_jennings
f6a800a8acc9        centos:7            "/usr/bin/bash -c ls…"   20 minutes ago      Exited (0) 20 minutes ago                       busy_ardinghelli
b64fae638238        nginx:latest        "/bin/bash"              30 minutes ago      Up 11 minutes               80/tcp              vibrant_swartz
批量删除容器
docker ps -a | awk ‘{print "docker rm "$1}’ | bash
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
c875a3516d3e        nginx:latest        "/bin/bash"              16 minutes ago      Exited (0) 16 minutes ago                       heuristic_jennings
f6a800a8acc9        centos:7            "/usr/bin/bash -c ls…"   24 minutes ago      Exited (0) 24 minutes ago                       busy_ardinghelli
b64fae638238        nginx:latest        "/bin/bash"              34 minutes ago      Up 15 minutes               80/tcp              vibrant_swartz
[root@192 abc]# docker ps -a | awk '{print "docker rm "$1}' | bash
Error: No such container: CONTAINER
c875a3516d3e
f6a800a8acc9
Error response from daemon: You cannot remove a running container b64fae63823860866a2f24ef8dadfd6ccadb19dda42568b14d8c2e066f928819. Stop the container before attempting removal or force remove
[root@192 abc]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b64fae638238        nginx:latest        "/bin/bash"         35 minutes ago      Up 16 minutes       80/tcp              vibrant_swartz
总结
镜像常用命令
witch docker                                     #查找存放路径
docker version                                  #查看版本
docker search 名称                                #搜索镜像
docker pull 名称                              #下载镜像
docker images                                   #查看已下载镜像
docker inspect 镜像ID                             #获取镜像信息
docker tag 镜像名称:镜像标签 镜像名称:镜像标签      #添加镜像标签
docker rmi 镜像名称:镜像标签                        #删除镜像
docker saved -o 文件名 镜像名                     #镜像输出
docker load < 文件名                            #镜像导入
docker login                                    #登录
docker push                                     #上传
容器常用命令
docker create -it 镜像名称 终端                    #容器创建
docker ps -a                                    #查看容器状态
docker start 容器ID                               #启动容器
docker run 镜像 -c 所需要的指令
docker stop 容器ID                                #终止运行
docker run -d 镜像名称 终端 -c 执行命令           #持续在后台执行第一种进入容器的方式
docker run -it 容器名称
第二种进入容器的方式
docker start 容器ID
当容器处于up状态的时候用exec进入
docker exec -it 容器ID 终端docker export 容器ID > 文件名                  #容器导出
docker rm 容器ID                              #删除容器

容器与容器云——Docker容器基本概念相关推荐

  1. 如何保证云docker容器重启后数据不丢失

    由于测试服,经常会重启docer,而每次重启数据将会丢失mysql数据.现在需要持久化,持久化不能用docker内部,只能用外部磁盘.本章教你咋解决这个问题. 挂载到PVC磁盘中(这个要钱) 另外就是 ...

  2. docker 查看已安装容器_WIN7下安装Docker容器

    一.Docker容器介绍 Docker 是一个开源的应用容器引擎,可以打包他们的应用以及依赖包到一个可移植的镜像中.一个完整的Docker由DockerClient客户端.Docker Daemon守 ...

  3. 容器安装java_在docker容器中安装Java(从宿主机向docker容器中拷贝文件)

    操作系统 [root@Optimus /]# uname -a Linux Optimus 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2 ...

  4. 学习笔记:云原生容器化技术——Docker

    Docker学习笔记 前言 一.Docker概述 1.1 Docker为什么会出现? 1.2 Docker的历史 1.3 Docker为什么这么火爆? 1.4 虚拟机技术与容器化技术的区别 二.Doc ...

  5. 容器云 docker

    容器云 认识容器 容器简介 容器是一种轻量级的.可移植的.自包含的软件打包技术 本质:一组受到资源限制且彼此间相互隔离的进程 与虚拟化技术的区别 传统虚拟化技术 虚拟了一套硬件后,在其上运行一个完整的 ...

  6. 【云原生】第四篇--Docker容器镜像介绍及应用

    Docker容器镜像介绍及应用 一.Docker容器镜像操作 1.1 查看本地容器镜像 1.1.1 使用docker images命令查看 1.1.2 使用docker image命令查看 1.1.3 ...

  7. docker容器虚拟化技术_Docker,虚拟机和容器的全面介绍

    docker容器虚拟化技术 by shota jolbordi 通过Shota Jolbordi Docker has been a buzzword for tech people for the ...

  8. 上手 Docker 容器,不应该是个问题

    来源 | 无敌码农 责编 | 寇雪芹 头图 | 下载于视觉中国 在微服务时代,服务数量及规模越来越大,服务的部署及运维的模式如果仍然采用传统方式就会大大增加运维成本.所以微服务时代的运维方式一定是De ...

  9. Docker容器化开发

    目录 1.初识Docker 1.1.Docker概念 1.2.安装Docker 1.3.docker架构 3.docker命令 3.1.进程相关命令 3.2.镜像相关命令 3.3.容器相关命令 4.D ...

最新文章

  1. HDFS_API基本应用
  2. 【JAVA进阶】——myEclipse连接mysql启动数据库服务
  3. GPU 实现 RGB -- YUV 转换 (OpenGL)
  4. 数据结构之外部排序:失败树
  5. WPF窗体的生命周期
  6. Android开发笔记(一百一十五)设计工具
  7. 前端程序员总结的工作中常用的十大浏览器兼容性问题,初学者瑰宝!
  8. 【比赛】CCF BDCI新闻情感分类初赛A榜4/2735,复赛1%题解报告
  9. Mac OS X上安装 Ruby运行环境
  10. 最近面试有感,不要耍小聪明,面试官都是开了上帝视角的
  11. 记录自己的心路文字~
  12. C# 高并发场景下 共享内存 Actor并发模型到底哪个快?
  13. HMI-29-【运动模式】转速表实现及中心油耗仪表实现
  14. 高保真设计软件介绍及推荐
  15. 阿里云计算acp认证报考条件及需要具备的知识
  16. 手把手QQ机器人制作教程,根据官方接口进行开发,基于Python语言制作的详细教程(更新中)
  17. AppStore 新功能解读:自定义产品页面和 A/B Test 工具(iOS)
  18. php做到聊天发图片,网页聊天框发送表情图片实现方法
  19. Keras之Conv2D
  20. verilog基本语法学习笔记

热门文章

  1. dmp格式怎么转换_如何生成转储(dmp)文件--工具篇
  2. PB中执行动态SQL语句(温故知新)
  3. JavaScript头像图片上传插件支持上传类型大小尺寸验证
  4. 红米note升级android,新版红米Note配置升级:系统基于Android 4.4.2
  5. 中断优先级和中断线程优先级
  6. numpy 查找 返回索引_numpy中实现ndarray数组返回符合特定条件的索引方法
  7. wp10手机不能连接微软服务器,Lumia920手机更新10166版WP10后,无法用Microsoft账户登录,也无法添加Microsoft账 - Microsoft Community...
  8. 图神经网络-随机游走
  9. 无法给变量添加属性导致出问题
  10. 双 JK 触发器 74LS112 逻辑功能。真值表_【第十章】触发器和事件