博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker学习系列一:初识docker
阅读量:7107 次
发布时间:2019-06-28

本文共 7539 字,大约阅读时间需要 25 分钟。

hot3.png

一、基本介绍

Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间(name space),来创建独立的软件容器(containers)。这可以在单一Linux实体下运作,避免引导一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、内存、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的 LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施,“Dockers是有能力打包应用程序及其虚拟容器,可以在任何Linux服务器上运行的依赖性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以运行,无论是公有云、私有云、单机等。”

二、安装过程

centos 7:

yum install docker

Ubuntu 16.04:

sudo apt install docker

三、镜像操作

1.获取镜像

$ sudo docker pull centosUsing default tag: latestlatest: Pulling from library/centos7b6bb4652a1b: Pull complete Digest: sha256:c1010e2fe2b635822d99a096b1f4184becf5d1c98707cbccae00be663a9b9131Status: Downloaded newer image for centos:latest

可以通过制定tag来获取特定版本的某一个镜像,如果不指定tag的话,默认获取的是latest标签的镜像

2.查看镜像信息

$ sudo docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEcentos              latest              36540f359ca3        4 days ago          192.5 MB

repository: 表示来自于哪个仓库,比如centos 仓库

tag: 镜像的标签信息,比如latest

IMAGE ID:镜像的ID号,唯一

CREATED: 创建时间

SIZE: 镜像大小

3.搜寻镜像

使用docker search 可以搜索远端仓库中共享的镜像,默认搜索docker hub 官方仓库中的镜像

$ sudo docker search mysqlNAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDmysql                           MySQL is a widely used, open-source relati...   4603      [OK]       mysql/mysql-server              Optimized MySQL Server Docker images. Crea...   314                  [OK]centurylink/mysql               Image containing mysql. Optimized to be li...   52                   [OK]zabbix/zabbix-server-mysql      Zabbix Server with MySQL database support       42                   [OK]zabbix/zabbix-web-nginx-mysql   Zabbix frontend based on Nginx web-server ...   23                   [OK]zabbix/zabbix-proxy-mysql       Zabbix proxy with MySQL database support        8                    [OK]appcontainers/mysql             Centos/Debian Based Customizable MySQL Con...   8                    [OK]marvambass/mysql                MySQL Server based on Ubuntu 14.04              7                    [OK]debezium/example-mysql          Example MySQL database server with a simpl...   6                    [OK]bitnami/mysql                   Bitnami MySQL Docker Image                      6                    [OK]dnhsoft/mysql-utf8              Inherits the official MySQL image configur...   5                    [OK]alterway/mysql                  Docker Mysql                                    3                    [OK]frodenas/mysql                  A Docker Image for MySQL                        3                    [OK]drupaldocker/mysql              MySQL for Drupal                                2                    [OK]yfix/mysql                      Yfix docker built mysql                         2                    [OK]lysender/mysql                  MySQL base image using Ubuntu 16.04 Xenial      1                    [OK]xalt/mysql                      Mysql with special Atlassian configuration...   1                    [OK]keopx/mysql                     MySQL 5.7, 5.6 and 5.5 for Docker. Debian ...   1                    [OK]tozd/mysql                      MySQL (MariaDB fork) Docker image.              1                    [OK]nanobox/mysql                   MySQL service for nanobox.io                    0                    [OK]captomd/mysql                   CaptoMD mysql configuration                     0                    [OK]cloudposse/mysql                Improved `mysql` service with support for ...   0                    [OK]1maa/mysql                      MySQL database                                  0                    [OK]datajoint/mysql                 MySQL image pre-configured to work smoothl...   0                    [OK]projectomakase/mysql            Docker image for MySQL                          0                    [OK]

4. 删除镜像

使用docker rmi 命令删除镜像

$sudo  docker rmi ubuntu:v2Failed to remove image (ubuntu:v2): Error response from daemon: conflict: unable to remove repository reference "ubuntu:v2" (must force) - container d63a819c3eaf is using its referenced image a8edd5cf3708解决方法:$ sudo docker rm b23dd9de7382   # 删除依赖的container

5.创建镜像

使用docker commit命令,其命令格式为docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

主要选项:

-a 作者信息

-m 提交信息

-p 提交时暂停容器运行

$ sudo docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEcentos              latest              36540f359ca3        4 days ago          192.5 MBubuntu              14.04               302fa07d8117        12 weeks ago        188 MB$ sudo docker run -ti ubuntu:14.04 /bin/bash[sudo] password for yangyang: root@e305f234749f:/# touch test.txtroot@e305f234749f:/# exitexit$ sudo docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMESe305f234749f        ubuntu:14.04        "/bin/bash"              About a minute ago   Exited (0) About a minute ago                       gloomy_torvalds$ sudo docker commit -m "add a new file" -a "Yangyang"  e305f234749f  test_commitsha256:aaeb6a41e5f9ff46e2c4db3a26ac6f78a307d2b6ab71380f1df3a46e9ede2313$ sudo docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEtest_commit         latest              aaeb6a41e5f9        4 seconds ago       188 MBcentos              latest              36540f359ca3        4 days ago          192.5 MBubuntu              14.04               302fa07d8117        12 weeks ago        188 MB

6.存出和载入镜像

可以使用docker save 和 docker load 命令来存出和载入镜像

$ sudo docker save -o ubuntu_14.04.tar ubuntu:14.04$ sudo docker load --input ubuntu_14.04.tar

四、容器操作

1.启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是在终止状态的容器重新启动。所需要的命令主要为docker run

$ sudo docker run -ti ubuntu /bin/bash[sudo] password for yangyang: root@d6a078dc0366:/#

其中 -t选项让docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入打开

有时需要让docker 在后台以守护态的形式运行,可以通过-d参数来实现

2.进入容器

进入容器可以用attach 或者exec命令

$ sudo docker run -ti ubuntu /bin/bash[sudo] password for yangyang: root@d6a078dc0366:/# exitexit$ sudo docker run -idt ubuntu6344cef145b4ac1b5dc644a92942fe7d11a1bf928223bb7b4bcb536a6eec0772$ sudo docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES6344cef145b4        ubuntu              "/bin/bash"         7 seconds ago       Up 6 seconds                            elegant_shannonyangyang@yangyang-VirtualBox:~$ sudo docker exec -ti 6344cef145b4 /bin/bashroot@6344cef145b4:/# lsbin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

3.导入和导出容器

使用export和import命令

$ sudo docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES6344cef145b4        ubuntu              "/bin/bash"         2 minutes ago       Up 2 minutes                            elegant_shannon$ sudo docker export 6344cef145b4 > test.tar$ cat test.tar | sudo docker import - test/ubuntu:v1.0sha256:993bc5eff095c98e4db4bd5b475e1ad0ce10b1b253187e7251fd15f1ea21ee47yangyang@yangyang-VirtualBox:~$ sudo docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEtest/ubuntu         v1.0                993bc5eff095        4 seconds ago       97.34 MB

转载于:https://my.oschina.net/zhangyangyang/blog/1305497

你可能感兴趣的文章
激发灵感:26个清爽的蓝色调网页设计作品欣赏
查看>>
理解UIApplication(转)
查看>>
JavaScript面向对象编程入门
查看>>
单机版数据库
查看>>
JavaScript调用系统exe文件
查看>>
spring(13)
查看>>
Java中的反射机制(三) 反射与数组
查看>>
${oid?c}的使用
查看>>
12306多种手段反击浏览器厂商“见招拆招”
查看>>
64位机器上编译
查看>>
WMI使用的WIN32_类库名 【转】
查看>>
c#图像灰度化、灰度反转、二值化
查看>>
ESB:消息队列之小试牛刀
查看>>
flash基本操作二-库面板和元件创建
查看>>
算法题009 电梯调度算法
查看>>
iOS 推送,服务器。证书。
查看>>
白话学习MVC(三)页面周期二
查看>>
POJ 1611 The Suspects (并查集,简单)
查看>>
embOS实时操作系统 - 概览
查看>>
magic_quotes_gpc()和magic_quotes_runtime()
查看>>