Docker容器(分享十五)Docker容器(分享十五)

       
自从进入合作社称计算部门,接触的新技巧进一步多矣,而且客户需要呢原来越多样性,做自我平名老IT,也须跟达到节奏,接下一段时间我先品尝去打听docker基本功能,然后深入去挖掘。

       
自从进入合作社称计算部门,接触的新技巧更是多了,而且客户需求也原来越多样性,做我平叫做老IT,也须同达到节奏,接下一段时间我先行品尝去询问docker基本功能,然后深入去挖。

         一、什么是docker?

         一、什么是docker?

        Docker
是一个开源的使容器引擎,让开发者可以打包他们之动以及因包到一个而移栽的器皿中,然后发布暨外流行的
Linux
机器上,也足以实现虚拟化。容器是了用沙箱机制,相互之间不会见产生另接口。

        Docker
是一个开源之运容器引擎,让开发者可以包他们的用以及因包及一个而移栽的容器中,然后发布暨其它流行的
Linux
机器上,也足以实现虚拟化。容器是全然使沙箱机制,相互之间不见面发出另接口。

一个完全的Docker有以下几单部分构成:

一个整体的Docker有以下几独片构成:

  1. dockerClient客户端

  2. Docker Daemon守护进程

  3. Docker Image镜像

  4. DockerContainer容器

  1. dockerClient客户端

  2. Docker Daemon守护进程

  3. Docker Image镜像

  4. DockerContainer容器

     二、如何设置docker

     二、如何设置docker

   
docker支持以主流的操作系统平台达成使,包含Ubuntu、Centos、Windows以及MacOS系统等。当然在linux系统平台及是原生支持,使用体验是无限好的。本分享中就因为centos为例进行安装

   
docker支持于主流的操作系统平台及行使,包含Ubuntu、Centos、Windows以及MacOS系统等。当然在linux系统平台上是原生支持,使用体验是绝好之。本分享中就以centos为条例进行安装

    docker支持centos6以及背后的版本

    docker支持centos6同背后的本子

   $yum install –y docker

   $yum install –y docker

   三、镜像

   三、镜像

     1.取镜像

     1.获镜像

docker pull NAME[:TAG]    比如:docker pull Ubuntu

docker pull NAME[:TAG]    比如:docker pull Ubuntu

    2.查看镜像信息

    2.查看镜像信息

[root@localhost ~]# docker images;
REPOSITORY          TAG                 IMAGE ID           
CREATED             SIZE
docker.io/ubuntu    latest              00fd29ccc6f1        32 hours
ago        110.5 MB
[root@localhost ~]# docker inspect 00fd29ccc6f1

[root@localhost ~]# docker images;
REPOSITORY          TAG                 IMAGE ID           
CREATED             SIZE
docker.io/ubuntu    latest              00fd29ccc6f1        32 hours
ago        110.5 MB
[root@localhost ~]# docker inspect 00fd29ccc6f1

[
    {
        “Id”:
“sha256:00fd29ccc6f167fa991580690a00e844664cb2381c74cd14d539e36ca014f043”,
        “RepoTags”: [
            “docker.io/ubuntu:latest”

[
    {
        “Id”:
“sha256:00fd29ccc6f167fa991580690a00e844664cb2381c74cd14d539e36ca014f043”,
        “RepoTags”: [
            “docker.io/ubuntu:latest”

   3.搜索镜像(搜索远端仓库中共享的镜像,默认搜索docker
HUB官方仓库中之镜像)

   3.搜索镜像(搜索远端仓库中共享的镜像,默认搜索docker
HUB官方仓库中的镜像)

docker search mysql
INDEX      
NAME                                                            
DESCRIPTION                                     STARS     OFFICIAL  
AUTOMATED
docker.io  
docker.io/mysql                                                  MySQL
is a widely used, open-source relati…   5412      [OK]      
docker.io  
docker.io/mariadb                                                MariaDB
is a community-developed fork of M…   1676      [OK]      
docker.io  
docker.io/mysql/mysql-server                                    
Optimized MySQL Server Docker images. Crea…   373                 
[OK]
docker.io  
docker.io/percona                                                Percona
Server is a fork of the MySQL rela…   309       [OK]      
docker.io  
docker.io/hypriot/rpi-mysql                                     
RPi-compatible Docker Image with Mysql          74                  
docker.io  
docker.io/zabbix/zabbix-server-mysql                             Zabbix
Server with MySQL database support       66                   [OK]
docker.io  
docker.io/centurylink/mysql                                      Image
containing

docker search mysql
INDEX      
NAME                                                            
DESCRIPTION                                     STARS     OFFICIAL  
AUTOMATED
docker.io  
docker.io/mysql                                                  MySQL
is a widely used, open-source relati…   5412      [OK]      
docker.io  
docker.io/mariadb                                                MariaDB
is a community-developed fork of M…   1676      [OK]      
docker.io  
docker.io/mysql/mysql-server                                    
Optimized MySQL Server Docker images. Crea…   373                 
[OK]
docker.io  
docker.io/percona                                                Percona
Server is a fork of the MySQL rela…   309       [OK]      
docker.io  
docker.io/hypriot/rpi-mysql                                     
RPi-compatible Docker Image with Mysql          74                  
docker.io  
docker.io/zabbix/zabbix-server-mysql                             Zabbix
Server with MySQL database support       66                   [OK]
docker.io  
docker.io/centurylink/mysql                                      Image
containing

4.去镜像

4.去镜像

docker rmi image(image可以啊标签或者ID)

docker rmi image(image可以为标签或者ID)

docker rmi Ubuntu:latest

docker rmi Ubuntu:latest

dicker rmi –f ubuntu  强行去,不建议如此操作

dicker rmi –f ubuntu  强行去,不建议如此操作

一般建议先去依赖该镜像的享有容器,再来删除镜像。

貌似提议先去依赖该镜像的备容器,再来删除镜像。

docker ps -a查看本机上存在的器皿。

docker ps -a查看本机上在的器皿。

5.创办镜像

5.创办镜像

因已部分镜像的器皿创建:

冲已有的镜像的容器创建:

[root@localhost ~]# docker run -ti ubuntu /bin/bash

[root@localhost ~]# docker run -ti ubuntu /bin/bash

touch test

touch test

exit

exit

docker commit –m “Added a new file” –a “docker Newbee” 8bd2274ada22 
test  9ecdbadc

docker commit –m “Added a new file” –a “docker Newbee” 8bd2274ada22 
test  9ecdbadc

根据本地模板导入

根据本地模板导入

cat ubuntu –14.04-x86_64-minimal.tar.gz |docker import – ubuntu:14.04

cat ubuntu –14.04-x86_64-minimal.tar.gz |docker import – ubuntu:14.04

 

 

6.存出同载入镜像

6.存出与载入镜像

存来镜像

存来镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID           
CREATED             SIZE
docker.io/ubuntu    latest              00fd29ccc6f1        2 days
ago          110.5 MB
docker.io/httpd     latest              7239615c0645        5 days
ago          177.3 MB
docker.io/mysql     latest              7d83a47ab2d2        5 days
ago   

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID           
CREATED             SIZE
docker.io/ubuntu    latest              00fd29ccc6f1        2 days
ago          110.5 MB
docker.io/httpd     latest              7239615c0645        5 days
ago          177.3 MB
docker.io/mysql     latest              7d83a47ab2d2        5 days
ago   

[root@localhost ~]# docker save -o ubuntu_test.tar ubuntu
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID           
CREATED             SIZE
docker.io/ubuntu    latest              00fd29ccc6f1        2 days
ago          110.5 MB
docker.io/httpd     latest              7239615c0645        5 days
ago          177.3 MB
docker.io/mysql     latest              7d83a47ab2d2        5 days
ago          408.2 MB
[root@localhost ~]# ls
anaconda-ks.cfg  ubuntu_test.tar

[root@localhost ~]# docker save -o ubuntu_test.tar ubuntu
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID           
CREATED             SIZE
docker.io/ubuntu    latest              00fd29ccc6f1        2 days
ago          110.5 MB
docker.io/httpd     latest              7239615c0645        5 days
ago          177.3 MB
docker.io/mysql     latest              7d83a47ab2d2        5 days
ago          408.2 MB
[root@localhost ~]# ls
anaconda-ks.cfg  ubuntu_test.tar

载入镜像

载入镜像

docker load < ubuntu_test.tar

docker load < ubuntu_test.tar

四、容器

四、容器

简而言之地游说,容器是镜像的一个运行实例,所例外之凡,它含有额外的可是写文件层。

简易地游说,容器是镜像的一个运行实例,所不同的凡,它包含额外的而是写文件层。

创立容器:

创立容器:

新建容器:

新建容器:

[root@localhost ~]# docker create -it ubuntu:latest
743f20816538a52a686cf61d6a30db6fdb609c0da2d6a844e645b334b9bb3252

[root@localhost ~]# docker create -it ubuntu:latest
743f20816538a52a686cf61d6a30db6fdb609c0da2d6a844e645b334b9bb3252

docker start

docker start

新建并启动容器

新建并启动容器

docker run ubuntu  /bin/echo “Hello world’

docker run ubuntu  /bin/echo “Hello world’

docker ps: 查看时运行的器皿

docker ps: 查看时运作的器皿

docker ps -a:查看有容器,包括已的

docker ps -a:查看有容器,包括停止的

docker ps -l :查看时创建的器皿,只列出最后创建的。

docker ps -l :查看时创建的器皿,只列出最后创建的。

docker ps -n=2:-n=x选项,会列出最后创建的x个容器。

docker ps -n=2:-n=x选项,会列出最后创建的x个容器。

容器名:docker start docker_run,或者ID:docker start 43e3fef2266c

容器名:docker start docker_run,或者ID:docker start 43e3fef2266c

–restart(自动还开):默认情况下容器是匪重复开的,–restart标志会检查容器的离码来支配容器是否更开容器。

–restart(自动重新开):默认情况下容器是不重复开的,–restart标志会检查容器的退码来控制容器是否重开容器。

docker run --restart=always --name docker_restart -d centos /bin/sh -c "while true;do echo hello world; sleep;done":

docker run --restart=always --name docker_restart -d centos /bin/sh -c "while true;do echo hello world; sleep;done":

--restart=always:不管容器的返回码是呀,都见面更开容器。

--restart=always:不管容器的返回码是啊,都见面再度开容器。

--restart=on-failure:5:当容器的返回值是非0时才会重复开容器。5凡可选的重启次数

--restart=on-failure:5:当容器的返回值是非0时才见面再开容器。5凡可选的重启次数

容器终止

容器终止

docker stop [NAME]/[CONTAINER ID]:将容器退出。

docker stop [NAME]/[CONTAINER ID]:将容器退出。

docker kill [NAME]/[CONTAINER ID]:强制停止一个器皿。

docker kill [NAME]/[CONTAINER ID]:强制停止一个容器。

抹容器

抹容器

docker rm [NAME]/[CONTAINER ID]

docker rm [NAME]/[CONTAINER ID]

容器终止后,在需要的时候可以重新启动,确定不需要了,可以进行删除操作。

 

导入和导出容器
容器终止后,在需要的时候可以重新启动,确定不需要了,可以进行删除操作。

 

导入和导出容器

[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND               
CREATED             STATUS                     PORTS              
NAMES
dd7eef06ccba        ubuntu              “/bin/echo “Hello w”   12
minutes ago      Exited (0) 4 minutes ago                      
silly_meitner
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND               
CREATED             STATUS                     PORTS              
NAMES
dd7eef06ccba        ubuntu              “/bin/echo “Hello w”   12
minutes ago      Exited (0) 4 minutes ago                      
silly_meitner
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                 
CREATED             STATUS                      PORTS              
NAMES
dd7eef06ccba        ubuntu              “/bin/echo “Hello w”     14
minutes ago      Exited (0) 7 minutes ago                       
silly_meitner
743f20816538        ubuntu:latest       “/bin/bash”              17
minutes ago      Created                                        
nostalgic_stonebraker
8bd2274ada22        ubuntu              “/bin/bash”              31
minutes ago      Exited (0) 31 minutes ago                      
sad_mccarthy
7786523990bf        ubuntu              “/bin/bash”              30
hours ago        Exited (0) 30 hours ago                        
awesome_goldstine
175c8cf0149e        ubuntu              “echo ‘hello! I am he”   30
hours ago        Exited (0) 30 hours ago                        
fervent_kowalevski
[root@localhost ~]# docker export dd7eef06ccba > test.tar

[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND               
CREATED             STATUS                     PORTS              
NAMES
dd7eef06ccba        ubuntu              “/bin/echo “Hello w”   12
minutes ago      Exited (0) 4 minutes ago                      
silly_meitner
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND               
CREATED             STATUS                     PORTS              
NAMES
dd7eef06ccba        ubuntu              “/bin/echo “Hello w”   12
minutes ago      Exited (0) 4 minutes ago                      
silly_meitner
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                 
CREATED             STATUS                      PORTS              
NAMES
dd7eef06ccba        ubuntu              “/bin/echo “Hello w”     14
minutes ago      Exited (0) 7 minutes ago                       
silly_meitner
743f20816538        ubuntu:latest       “/bin/bash”              17
minutes ago      Created                                        
nostalgic_stonebraker
8bd2274ada22        ubuntu              “/bin/bash”              31
minutes ago      Exited (0) 31 minutes ago                      
sad_mccarthy
7786523990bf        ubuntu              “/bin/bash”              30
hours ago        Exited (0) 30 hours ago                        
awesome_goldstine
175c8cf0149e        ubuntu              “echo ‘hello! I am he”   30
hours ago        Exited (0) 30 hours ago                        
fervent_kowalevski
[root@localhost ~]# docker export dd7eef06ccba > test.tar

 

 

cat test.tar |docker import –test/ubuntu

cat test.tar |docker import –test/ubuntu

 

 

五、仓库

五、仓库

docker 官方维护了一个国有仓库 http://hub.docker.com 
,大约15000大多个镜像

docker 官方维护了一个公共仓库 http://hub.docker.com 
,大约15000基本上只镜像

六、数据管理

六、数据管理

用户在运docker的长河遭到,往往得能够查容器内采取来的数量,或者需要将容器内之数开展对应的备份,甚至怀念管多个容器内开展多少的共享,这必然关系容器的数额管理操作。容器中管理数据要有个别种艺术:

用户在动用docker的进程遭到,往往得能够查容器内以来的数额,或者需要拿容器内之多少开展相应的备份,甚至怀念管多个容器内开展多少的共享,这势必关系容器的数管理操作。容器被管理数据要有零星栽方式:

  • 数据卷(Data Volumes)
  • 数量卷容器(Data Volume Containers)
  • 数据卷(Data Volumes)
  • 数卷容器(Data Volume Containers)
当容器内创建一个数码卷

docker run -it –rm –name web -v /src/webapp:/opt/webapp
training/webapp python app.py
#将宿主机中之/src/webapp目录挂载到容器被的/opt/webapp中

于容器内创建一个数量卷

docker run -it –rm –name web -v /src/webapp:/opt/webapp
training/webapp python app.py
#将宿主机中之/src/webapp目录挂载到容器被的/opt/webapp中

数量容器
  • 第一,创建一个多少卷容器dbdata,并以里面创建一个数据卷挂载到/dbdata

docker run –name jpzhu_centos -v /jpzhu_file –rm -it centos
/bin/bash
#开创一个数量容器并且挂载其中/jpzhu_file文件作为其他容器共享的数额卷

  • 继,可以于另的器皿被运用–volumes-from
    来挂载dbdata中的/jpzhu_file
数量容器
  • 首先,创建一个数量卷容器dbdata,并于内部创建一个数目卷挂载至/dbdata

docker run –name jpzhu_centos -v /jpzhu_file –rm -it centos
/bin/bash
#创办一个数码容器并且挂载其中/jpzhu_file文件作为其它容器共享的多少卷

  • 接着,可以以任何的容器中运用–volumes-from
    来挂载dbdata中的/jpzhu_file
以数据卷容器迁移数据

备份

$ docker run –name worker -v ${pwd}:/backup –volumes-from dbdata -d
centos tar cvf /backup/backup.tar /dbdata

恢复

docker run –volumes –from dbdata2 –v(pwd):/backup busybox tar xvf /backup/backuptar

 

 
使多少卷容器迁移数据

备份

$ docker run –name worker -v ${pwd}:/backup –volumes-from dbdata -d
centos tar cvf /backup/backup.tar /dbdata

恢复

docker run –volumes –from dbdata2 –v(pwd):/backup busybox tar xvf /backup/backuptar