Docker Linux CentOS

版本:19.03.5

Docker是基于Go语言实现的容器引擎。

解决运行环境和开发环境不同造成的问题。

https://www.docker.com/

 

Docker分为DockerCE社区版和DockerEE企业版。

Docker 由镜像、容器、远程镜像仓库。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。


镜像仓库(Repository)

镜像仓库顾名思义是用来存放镜像的。

官方仓库地址: https://hub.docker.com


也可以配置其他仓库地址例如阿里运或个人仓库私服,使用配置文件 /etc/docker/daemon.json(没有时新建该文件)。 
{
    "registry-mirrors": ["<your accelerate address>"]
}

使配置生效:

# systemctl daemon-reload
# systemctl restart docker


镜像(Images)

是一种联合文件系统(Union File System),相当于一个linux文件系统。
特点:镜像是分层的。
    不同镜像可以共享相同的层。
    镜像本身是只读的。


镜像常用操作指令:

镜像信息
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        11 months ago       1.84kB
查询镜像
# docker search 镜像名称
将镜像下载到本地镜像仓库
# docker pull 镜像名称:标签
刪除镜像
# docker rmi {镜像ID|镜像名称:标签}

将镜像保存为物理文件

# docker save -o 保存镜像的文件名称.tar {镜像ID|镜像名称:标签}

加载保存为物理文件的镜像

# docker load -i 保存镜像的文件名称.tar 

将本地镜像推送到远程仓库

-- 可能需要认证 login/logout ,需要输入用户名和密码
# docker login docker.test.com
-- 提交前需要更改镜像名称,需要增加用户前缀避免冲突
# docker tag 镜像名称:镜像标签 用户前缀/新镜像名称:新镜像标签
-- 推送
# docker push 用户前缀/新镜像名称:新镜像标签


容器(Container)

容器是通过运行镜像产生的。是简易版的Linux环境 包括文件系统、用户空间、进程空间。

容器是完全使用沙箱机制,相互之间不会有任何接口。


容器常用指令:
列出所有运行中的容器
# docker ps

可增加参数 -a 查询所有容器

新建启动容器
# docker run {镜像ID|镜像名称:标签}
退出容器
#exit (退出并停止容器)
Ctrl + p + q (退出不停止容器)

启动容器:
# docker start {容器ID|容器名称}
停止容器:
# docker stop {容器ID|容器名称}
# 强制停止容器:
# docker kill 容器ID
重启容器:
# docker restart {容器ID|容器名称}
删除容器:
# docker rm {容器ID|容器名称}
# 删除多个容器:
# docker rm -f $(docker ps -aq)
# docker ps -a -q | xargs docker rm
后台方式运行容器
# docker run -d {镜像ID|镜像名称:标签}
# 端口映射
# docker run -d -p 宿主机端口:容器内端口 –-name 自定义容器名称 {镜像ID|镜像名称:标签}
查看日志
# docker logs -f -t –tail {容器ID|容器名称}
查看容器内的进程
# docker top {容器ID|容器名称}
# docker stats {容器ID|容器名称}
查看容器详细信息
# docker inspect {容器ID|容器名称}
进入正在运行的容器,并以前台方式运行(i交互式)
# docker exec -it 容器ID bashshell     产生的新进程
# docker attach 容器ID              进入容器,不产生新的进程
从容器内拷贝文档到主机
# docker cp 容器Id:容器内路径 宿主主机路径
将当前容器制作镜像并提交到本地仓库
# docker commit -m=”说明” -a=”作者” 容器ID “镜像名称:标签”


数据卷(data volumes)

数据卷是一种特殊的目录或文件,可以实现宿主主机和容器数据共享,这个目录或文件是存在于宿主主机上的。
当容器停止运行并删除后,容器所产生的数据将会丢失,数据卷可以用来保存持久化容器在运行过程中产生的数据,也可以用来当做恢复容器运行所需数据的源。

数据前是独立于容器生命周期,并且可以在被多个容器共享的。

当一个数据圈被多个容器挂载时,则该容器被称为数据容器卷。

增加数据卷

# docker run -it -v 容器内路径 镜像名称
数据容器卷
# docker run -it –name 容器名称2 –volumes-from 容器名称1 镜像名称
# 容器名称1 成为数据卷容器

Dockerfile

Dockerfile文件是用来构建镜像的文本文件。

关键字(所有关键字都需要大写):

FROM 指定基础镜像,定制的镜像都是基于 FROM 的镜像

MAINTAINER 作者

RUN 用于(docker build)执行后面跟着的命令行命令。

    注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。

CMD 指定容器启动过程中(docker run)需要运行的命令

    CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。

    注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

ENTRYPOINT 和CMD类似,单参数有不会被docker run的参数覆盖。

    但是, 如果运行 docker run 时使用了 --entrypoint 选项,此选项的参数可当作要运行的程序覆盖 ENTRYPOINT 指令指定的程序。

    注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。

COPY 复制指令,将宿主机中文件或者目录复制到容器里指定路径
ADD 将宿主机的文件复制到容器指定路径,并且解压。
ENV 设置环境变量
ARG 构建参数
VOLUME 定义匿名数据卷。
EXPOSE 声明端口
WORKDIR 指定工作目录
USER 用于指定执行后续命令的用户和用户组
HEALTHCHECK 用于指定某个程序或者指令来监控 docker 容器服务的运行状态。
ONBUILD 用于延迟构建命令的执行。

推荐文章:https://www.runoob.com/docker/docker-dockerfile.html

执行构建
# docker build -f 路径 -t 镜像名称 执行目录

docker-compose

docker-compose 是有 python实现的,用来对多个容器的定义和运行进行管理。

官网文档:https://docs.docker.com/compose/


docker-swarm

swarm是Docker官方提供的docker集群管理工具。

官方文档:https://docs.docker.com/swarm/overview/



转载请指明出处!http://www.miselehe.com/article/view/51