Docker 基本介绍

Docker 基本介绍

镜像

Docker镜像就是一个只读的模板。

例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或用户需要的其它应用

程序。

镜像可以用来创建Docker容器。Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一

个已经做好的镜像来直接使用。

容器

Docker利用容器来运行应用。

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全

的平台。

可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运

行在其中的应用程序。

  • 注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

仓库

仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区

分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的

标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

  • 注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

centos7安装

安装

# yum install docker

启动服务

# systemctl start  docker.service

开机启动

# systemctl enable docker.service

是否安装成功

# docker version

镜像下载

下载镜像

# docker pull daocloud.io/centos:7

查看已有的镜像

# sudo docker images

rm 删除容器

删除容器(可一次性删除多个)

# docker rm name1 name2 name3 ...

ps 查看容器

查看正在运行的容器

# docker ps

查看所有容器

# docker ps -a

run 运行容器

以守护态运行容器

# docker run -d  centos:7 /bin/sh -c "while true; do echo hello world; sleep 1; done"

创建容器,并进入

-i(交互式)和 -t(临时终端)

# docker run -t -i --name tomcat8 centos:7

# docker run -it --name tomcat8 centos:7

挂载本地目录,通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。

docker run --privileged=true -v /root/software/:/mnt/software/ centos:7

端口映射

# docker run -p ip:hostPort:containerPort redis

    - iP表示主机的IP地址。 (-p 参数可添加多个)
    - hostPort表示宿主机的端口。 
    - containerPort表示虚拟机的端口。

进入容器

使用docker attach命令进入正在运行中的容器

只要这个连接终止,或者使用了exit命令,容器就会退出后台运行

# docker attach name/id号

使用docker exec命令进入正在运行中的容器

这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下,/bin/sh 是固定写法

# docker exec -it name/id号 /bin/sh 

容器打包

将容器打包成镜像

# docker commit -a "Jordan Bach" -m "saved my message" insane_wright jbgo/message:v0.0.1

  -a, --author=""     Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -m, --message=""    Commit message
  -p, --pause=true    Pause container during commit

Dockerfile

FROM daocloud.io/java:8u40-b22
COPY . /usr/stopper/conf
WORKDIR /usr/stopper/conf
ENTRYPOINT java -jar  bluelee-web-1.0.0-SNAPSHOT.jar

build

# docker build -t bluelee:1.0.0 .
  • -t 自定义镜像的名称

    docker build [OPTIONS] PATH | URL |-Build a new image from the source code at PATH

PATH or URL 在这2项中的文件被当作资源上下文. 创建image过程中,所有的文件都可能会被标记,比如说执行 ADD (link is external) 项. 当一个Dockerfile只有 URL STDIN (docker build - < Dockerfile), 那么就没有上下文了.

如果 URL 中指定了一个git repo,那么这个git repo也会被使用。 这个git repo会被当作子目录 (git clone -recursive). A fresh git clone occurs in a temporary directory on your local host, and then this is sent to the Docker daemon as the context. 反正如果使用git你必须处理好git的凭证和假如需要的VPN设置.

.dockerignore 在 PATH 项的根目录,这提供一种指定忽略的方式. 符合忽略规则的文件或目录将被忽略。

重要参数

选项 说明
-i, --interactive 保持标准输入打开,默认为false
-t, --tty 是否分配一个伪终端,默认为false

参考文档

相关推荐
存储服务专家StorageExpert6 分钟前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
大G哥1 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
醉颜凉1 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统
大道归简2 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
苦逼IT运维2 小时前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
仍有未知等待探索2 小时前
Linux 传输层UDP
linux·运维·udp
zeruns8022 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~3 小时前
Docker
docker·容器
北城青3 小时前
WebRTC Connection Negotiate解决
运维·服务器·webrtc
福大大架构师每日一题3 小时前
23.1 k8s监控中标签relabel的应用和原理
java·容器·kubernetes