番外篇:Docker从入门到精通

目录

 

Docker简介

是什么

能干嘛

去哪下

Docker安装

前提说明

Docker的基本组成

安装步骤

永远的HelloWorld

Docker的常用命令

帮助命令

镜像命令

容器命令

小总结

Docker镜像

是什么

特点

Docker镜像commit操作补充

Docker容器数据卷

是什么

能干嘛

数据卷

数据卷容器

DockerFile解析

是什么

DockerFile构建过程解析

DockerFile体系结构(保留字指令)

案例

小总结

Docker常用安装

总体步骤

安装Tomcat

安装mysql

安装redis

本地镜像发布到阿里云

本地镜像发布到阿里云流程

镜像的生成方法

将本地镜像推送到阿里云

将阿里云上的镜像下载到本地

Docker linux安装


Docker简介

是什么

解决了运行环境和配置问题软件问题,方便做持续继承并有助于整体发布的容器虚拟化技术

能干嘛

 

去哪下

Docker安装

前提说明

Docker的基本组成

安装步骤

永远的HelloWorld

 

Docker的常用命令

帮助命令

Docker version

Docker info

Docker –help

 

镜像命令

Docker images

列出本地主机上的镜像

-a 列出本地所有的镜像(含中间映射层)

-q 只显示镜像ID

--digests 只显示镜像的摘要信息

--no-trunc只显示完整的镜像信息

 

Docker search 搜索某个镜像的名字

--no-trunc显示完整的镜像描述

-s 列出收藏数不小于指定值的镜像

--automated只列出automated build类型的镜像

 

Docker pull下载镜像

Docker pull images:laster

 

Docker rmi XXX

Docker rmi –f ID

 

Docker rmi –f ID:TAG ID:TAG

 

Docker rmi –f $(docker images -qa)

 

容器命令

实例:下载centos镜像:docker pull centos

 

新建并启动容器

Docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明(常用):有些是一个减号,有些是两个减号

 

--name="容器新名字": 为容器指定一个名称;

-d: 后台运行容器,并返回容器ID,也即启动守护式容器;

-i:以交互模式运行容器,通常与 -t 同时使用;

-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-P: 随机端口映射;

-p: 指定端口映射,有以下四种格式

      ip:hostPort:containerPort

      ip::containerPort

      hostPort:containerPort

      containerPort

列出当前所有正在运行的容器

docker ps [OPTIONS]

OPTIONS说明(常用):

 

-a :列出当前所有正在运行的容器+历史上运行过的

-l :显示最近创建的容器。

-n:显示最近n个创建的容器。

-q :静默模式,只显示容器编号。

--no-trunc :不截断输出。

退出容器

Exit

容器停止退出

退出容器

Ctrl+P+Q

容器不停止退出

启动容器

Docker start ID

 

重启容器

Docker restart ID

 

停止容器

Docker stop ID

 

强制停止容器

Docker kill ID

 

删除已停止的容器

Docker rm ID

Docker rm –f $(docker ps –a -q)

Docker ps –a –q | xargs docker rm

 

重要命令

启动守护式容器

Docker run –d ID

 

查看容器日志

Docker logs –f –t –tail ID 

-t 加入时间戳

-f 跟随最新的日志打印

--tail+数字 显示最后多少米

查看容器内运行的进程

Docker top ID

 

查看容器内部细节

Docker inspect ID

 

进入正在运行的容器并以命令行交互

Docker exec –it 容器ID

Exec是在容器中打开新的终端,并且可以启动新的进程

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

直接进入容器启动命令的终端,不会启动新的进程

从容器内拷贝文件到主机上

Docker cp 容器ID:容器内路径 目的主机路径

 

 

小总结

attach

Create a new image from a container changes                      

当前 shell 下 attach 连接指定运行镜像                                                        

build 

Copy files/folders from the containers filesystem to the host path

通过 Dockerfile 定制镜像                                                                     

commit

Create a new container                                           

 提交当前容器为新的镜像                                                                       

cp    

Inspect changes on a container's filesystem                      

从容器中拷贝指定文件或者目录到宿主机中                                 

create

Get real time events from the server                             

创建一个新的容器,同 run,但不启动容器                                                        

diff  

Run a command in an existing container                           

查看 docker 容器变化                                                                         

events

Stream the contents of a container as a tar archive              

从 docker 服务获取容器实时事件                                                               

exec  

Show the history of an image                                     

在已存在的容器上运行命令                                                                      

export

List images                                                      

导出容器的内容流作为一个 tar 归档文件[对应 import ]                                  

history

Create a new filesystem image from the contents of a tarball     

展示一个镜像形成历史                                                                         

images

Display system-wide information                                  

列出系统当前镜像                                                                              

import

Return low-level information on a container                      

从tar包中的内容创建一个新的文件系统映像[对应export]                           

info  

Kill a running container                                         

显示系统相关信息                                                                             

inspect

Load an image from a tar archive                                 

查看容器详细信息                                                                             

kill   

Register or Login to the docker registry server                  

kill 指定 docker 容器                                                                        

load  

Log out from a Docker registry server                            

从一个 tar 包中加载一个镜像[对应 save]                                                       

login 

Fetch the logs of a container                                    

注册或者登陆一个 docker 源服务器                                                        

logout

Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    

从当前 Docker registry 退出                                                                 

logs  

Pause all processes within a container                           

输出当前容器日志信息                                                                         

port  

List containers                                                  

查看映射端口对应的容器内部源端口                                          

pause 

Pull an image or a repository from the docker registry server    

暂停容器                                                                                     

ps    

Push an image or a repository to the docker registry server      

列出容器列表                                                                                  

pull  

Restart a running container                                      

从docker镜像源服务器拉取指定镜像或者库镜像                                 

push  

Remove one or more containers                                    

推送指定镜像或者库镜像至docker源服务器                                      

restart

Remove one or more images

重启运行的容器                                                                               

rm    

Run a command in a new container                                 

移除一个或者多个容器                                                                         

rmi   

Save an image to a tar archive                                   

移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]

run   

Search for an image on the Docker Hub                            

创建一个新的容器并运行一个命令                                                               

save  

Start a stopped containers                                       

保存一个镜像为一个 tar 包[对应 load]                                                         

search

Stop a running containers                                        

在 docker hub 中搜索镜像                                                                     

start 

Tag an image into a repository                                   

启动容器                                                                                     

stop  

Lookup the running processes of a container                      

停止容器                                                                                      

tag   

Unpause a paused container                                       

给源中镜像打标签                                                                             

top   

Show the docker version information                              

查看容器中运行的进程信息                                                                     

unpause

Block until a container stops, then print its exit code          

取消暂停容器                                                                                  

version

Create a new image from a container changes                      

查看 docker 版本号                                                                           

wait  

Copy files/folders from the containers filesystem to the host path

截取容器停止时的退出状态值                                                       

 

Docker镜像

是什么

用来打包软件运行环境和基于运行环境开发的软件

 

特点

Docker镜像都是只读的

Docker镜像commit操作补充

Docker commit提交容器副本使之成为一个新的镜像

Docker commit –m=“提交的描述信息” –a=”作者” 容器id 要创建的目标镜像名:[标签名]

 

案例演示

docker commit -m="new centos from pactera" -a="rui.zhang" 830271c4e052 centos-pactera:1.0.0

 

Docker容器数据卷

是什么

为了能保存数据在docker中我们使用卷

能干嘛

数据的持久化

容器间继承+共享数据

数据卷

直接命令添加

Docker run –it –v /宿主机绝对路径目录 :/容器内目录 镜像名

 

docker run -it -v /home/docker/column:/demo-test centos-pactera:1.0.0

带全新

docker run -it -v /home/docker/column:/demo-test:ro centos-pactera:1.0.0

 

docker inspect ID

"Mounts": [

            {

                "Type": "bind",

                "Source": "/home/docker/column",

                "Destination": "/demo-test",

                "Mode": "",

                "RW": true,

                "Propagation": "rprivate"

            }

        ],

 

DockerFile添加

新建DockerFile

FROM centos

VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]

CMD echo "finished,--------success1"

CMD /bin/bash

 

Build生成镜像

docker build -f DockerFile -t pactera .

启动容器后自动生成了文件

 

对应的宿主机目录

"Mounts": [

            {

                "Type": "volume",

                "Name": "7115c7ed85a950b78769e89f09555d66e68d8e37d9d9a18dbbf0494326ff0745",

                "Source": "/var/lib/docker/volumes/7115c7ed85a950b78769e89f09555d66e68d8e37d9d9a18dbbf0494326ff0745/_data",

                "Destination": "/dataVolumeContainer1",

                "Driver": "local",

                "Mode": "",

                "RW": true,

                "Propagation": ""

            },

            {

                "Type": "volume",

                "Name": "27856267f84bfffea11256a76c9cb0d9efdce8568e7e7afb67c07b79374e5006",

                "Source": "/var/lib/docker/volumes/27856267f84bfffea11256a76c9cb0d9efdce8568e7e7afb67c07b79374e5006/_data",

                "Destination": "/dataVolumeContainer2",

                "Driver": "local",

                "Mode": "",

                "RW": true,

                "Propagation": ""

            }

        ],

备注

Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied

解决办法:在挂载目录后多加一个--privileged=true参数即可

数据卷容器

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

 

容器间传递共享(--volumes-from)

  1. 根据新建立的镜像,启动容器

docker run -it --name dc01 pactera

有dataVolumeContainer1 和dataVolumeContainer2两个文件夹

  1. Dc02/Dc03继承自该容器

docker run -it --name dc02 --volumes-from dc01 pactera

docker run -it --name dc03 --volumes-from dc01 pactera

  1. Docker kill dc01
  2. Dc02和dc03照样可以访问数据卷

DockerFile解析

是什么

Dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本

构建步骤:

  1. 编写docker文件
  2. Docker build
  3. Docker run

DockerFile构建过程解析

从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,

*  Dockerfile是软件的原材料

*  Docker镜像是软件的交付品

*  Docker容器则可以认为是软件的运行态。

Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

 

DockerFile体系结构(保留字指令)

FROM:基础镜像,当前新镜像是基于哪个镜像的

MAINTAINER:镜像维护者的姓名和邮箱地址

RUN: 容器构建时需要运行的命令

EXPOSE:当前容器对外暴露出的端口

WORKDIR:指定在创建容器后,终端默认登录的进来工作目录,一个落脚点

ENV:用来在构建镜像过程中设置环境变量

ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY:类似ADD,拷贝文件和目录到镜像中,将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置

COPY src dest

COPY [“src”,”dest”]

VOLUME:容器数据卷,用于数据保存和持久化工作

CMD:指定一个容器启动时要运行的命令,目的和cmd一样,都是在指定容器启动程序及参数

ONBUILD:当构建一个被继承的dockerFile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发

 

案例

编写

 构建

运行

小总结

Docker常用安装

总体步骤

安装Tomcat

安装mysql

安装redis

本地镜像发布到阿里云

本地镜像发布到阿里云流程

镜像的生成方法

将本地镜像推送到阿里云

将阿里云上的镜像下载到本地

附:

Docker linux安装

 

新建用户,并加入docker组

Groupadd docker

useradd docker -g docker

passwd docker

 

把docker加入sudoers

 Su root

Vi /etc/sudoers

在root下加入

Docker ALL=(ALL) ALL

 

下载安装脚本

Wget https://get.docker.com

Mv index.html docker-install.sh

Sh docker-install.sh

 

https://www.cnblogs.com/kingsonfu/p/11576797.html

阿里云镜像

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值