docker可以分为三部分:docker镜像   docker仓库  docker容器

docker镜像:一个image可以包含一个镜像,也可以理解为一个系统模板,里面安装了相关应用,也可以是纯净版的系统

docker仓库:docker registries ,也叫docker仓库, 分为共有库和私有库俩种,上传下载images是通过dcoker仓库来实现的,公有库叫docker hub,也可以在局域网部署一个私有的docker仓库

docker容器:容器是从image中创建的,可以执行启动、开始、停止、删除等操作,可以理解为image创建的一个虚拟机

开始正题:

docker安装:centos 7   ------------yum -y install docker-io

查看docker目前有哪些镜像:

docker images

查看docker库中有哪些images

docker search  “images-name”  例如: docker search centos7

我们看到下图出现很多参数,其中包括image的名字、描述、stars(受欢迎程度) 是否为官方创建  是否为自动创建等

Docker Official Images指docker标准库, 由docker 官方建立. 用户建立的image则会有userid的prefix. 

automated builds 则是通过代码版本管理网站结合docker hub提供的接口生成的, 例如github, bitbucket, 
你需要注册docker hub, 然后使用github或bitbucket的在账户链接到docker hub, 然后就可以选择在github或bitbucket里面的项目自动build docker image, 这样的话只要代码版本管理网站的项目有更新, 就会触发自动创建image.

docker简单介绍----镜像和容器管理

拉取镜像

docker pull docker.io/ansible/centos7-ansible    #下载完镜像后可以使用docker images查看是否下载成功

启动容器并进入到容器中

docker run -it {镜像id} /bin/bash    #也可以添加-d参数后台运行

假如容器在后台运行,这个时候就需要进入到该容器进行操作

1. docker attach 容器id

不常用:但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

2.容器中安装sshd进行远程

不常用:为了保证安全性,不建议开启SSHD服务

3.使用nsenter进行远程(默认已经安装,如果没有可以手动安装)

docker inspect -f '{{.State.Pid}}' 容器ID

nsenter --target 容器PID --mount --uts --ipc --net --pid

例如:

docker简单介绍----镜像和容器管理

4.使用 exec进入docker容器

docker exec -it 容器id  /bin/bash

 

===============================================================================================================================================

创建新镜像:在容器中部署好应用,有时会迁移到其它docker环境中,所以我们需要将当前容器中的应用创建为新的镜像上传到docker仓库中,方便下载使用

(1) docker commit来生成新镜像

参数详解:

  • -a :提交的镜像作者;

     

  • -c :使用Dockerfile指令来创建镜像;

     

  • -m :提交时的说明文字;

     

  • -p :在commit时,将容器暂停。

举例说明:
docker commit -a "guohaidong" -m "vsftpd" f8315ebb750b vsftpd:v1

使用Dockerfile创建新镜像

指令说明

指令的一般格式为INSTRUNCTION arguments,指令包括FROM、MAINTAINER、RUN等。具体指令及说明如下:

指令 说明
FROM 指定所创建镜像的基础镜像
MAINTAINER 指定维护者信息
RUN 运行命令
CMD 指定启动容器时默认执行的命令
LABEL 指定生成镜像的元数据标签信息
EXPOSE 声明镜像内服务所监听的端口
ENV 指定环境变量
ADD 赋值指定的<src>路径下的内容到容器中的<dest>路径下,<src>可以为URL;如果为tar文件,会自动解压到<dest>路径下
COPY 赋值本地主机的<scr>路径下的内容到容器中的<dest>路径下;一般情况下推荐使用COPY而不是ADD
ENTRYPOINT 指定镜像的默认入口
VOLUME 创建数据挂载点
USER 指定运行容器时的用户名或UID
WORKDIR 配置工作目录
ARG 指定镜像内使用的参数(例如版本号信息等)
ONBUILD 配置当前所创建的镜像作为其他镜像的基础镜像时,所执行的创建操作的命令
STOPSIGNAL 容器退出的信号
HEALTHCHECK 如何进行健康检查
SHELL 指定使用SHELL时的默认SHELL类型

 

 

 

 

 

 

 

 

 

 

 

 

Dockerfile文件格式

最简单的案例:

在linux系统中的某个路径新建一个文件为Dockerfile文件

vim Dockerfile

FROM docker.io/centos
MAINTAINER Guo Haidong <493630393@qq.com>
RUN yum -y install mariadb

然后使用docker build -t contos/mariadb:v1 -f /data/docker/Dockerfile .      #来生成新的镜像# “.”默认是指Dockerfile是在当前路径,也可以使用-f参数来指定Dockerfile路径

-t 指定镜像名称和tag

-f 指定Dcokerfile文件的path 

#*******搭建私有docker仓库,上传镜像到仓库,后面介绍

删除镜像

docker rmi  镜像id

删除镜像前必须删除容器

docker rm -f 容器id

查看容器id方法:

docker ps

===================================

终端运行一个nginx容器,如果没有nginx镜像会自动从docker仓库中pull下来

docker run --name nginx -it nginx /bin/bash

===========================================================

查看容器的pid

docker inspect -f '{{.State.Pid}}' 容器ID

使用nsenter配合容器PID来进入到容器里

nsenter --target 容器PID --mount --uts --ipc --net --pid

============================================================================

命令总结:

镜像管理

docker search  搜索镜像

docker pull  获取镜像

docker images  查看镜像

docker rmi   删除镜像

docker commit命令或者编写dockerfile文件  生成新镜像

容器管理

docker run --name -h hostname   启动容器

docker stop|start|restart 容器id        停止|启动|重启    容器

docker run --restart=always --name hostname -d 容器id或者容器名称  自动重启容器(当容器由于某种错误导致容器停止就会触发restart信号)

docker ps -l               查看最后一个退出容器

docker ps -n number        显示最后几个容器

docker top  容器id或者容器名称         查看当前运行的进程

docker logs -f  容器id或者容器名称     实时查看当前容器日志输出

docker attach | 容器SSH |使用nsenter |使用exec   进入容器     #这里推荐使用后俩种,

*****docker inspect 容器名称或者容器id    显示容器的详细信息

*****docker inspect --format '{{.Config.Hostname}}'   容器名称或者容器id

 

相关文章:

  • 2021-11-23
  • 2021-10-06
  • 2021-10-12
  • 2021-12-28
  • 2022-12-23
  • 2021-05-09
  • 2021-09-01
  • 2022-03-08
猜你喜欢
  • 2021-11-14
  • 2021-12-18
  • 2022-01-09
  • 2021-08-28
  • 2021-07-25
  • 2021-06-10
相关资源
相似解决方案