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

参考文档

相关推荐
geNE GENT39 分钟前
Nginx WebSocket 长连接及数据容量配置
运维·websocket·nginx
Cx330❀2 小时前
一文吃透Linux System V共享内存:原理+实操+避坑指南
大数据·linux·运维·服务器·人工智能
薛定谔的悦2 小时前
储能系统(EMS)核心架构解析:充放电控制、防逆流、防过载与 PID 调节
linux·运维·架构
志栋智能2 小时前
超自动化运维的终极目标:让系统自治运行
运维·网络·人工智能·安全·自动化
阿 才3 小时前
WSL2 + TFTP + 网络启动(Linux开发板与WSL2建立网络连接)
linux·运维·网络
Benszen3 小时前
Docker容器化技术全解析
运维·docker·容器
IMPYLH3 小时前
Linux 的 false 命令
linux·运维·服务器·bash
小江的记录本4 小时前
【Linux】《Linux常用命令汇总表》
linux·运维·服务器·前端·windows·后端·macos
一匹电信狗4 小时前
【Linux我做主】进程程序替换和exec函数族
linux·运维·服务器·c++·ubuntu·小程序·开源
加农炮手Jinx4 小时前
Flutter 三方库 cli_script 鸿蒙化极简命令行执行引擎适配探索:在多维沙盒终端环境注入异构 Shell 串联逻辑彻底拔高全自动化容器脚本运维及-适配鸿蒙 HarmonyOS ohos
运维·flutter·harmonyos