Docker 简单入门

**基本概念:**
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。linux 对内核版本有一定要求:需要在3.10 以上。

**重要名称说明:**
image(镜像)  : 包含运行所有东西,一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器
CONTAINER(容器):容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
Repository(仓库):仓库是集中存放镜像文件的场所,例如公开最大的仓库:https://hub.docker.com/,国内:http://www.dockerpool.com/。可以从仓库下载,例如centos7.2 ubuntu等镜像image。


**简单上手使用**
安装 docker:
yum install docker
systemctl start docker.service
systemctl enable docker.service

获取系统镜像:
https://registry.hub.docker.com/search?q=library查看官方的镜像
docker pull daocloud.io/library/centos:centos7.2.1511

运行镜像,成为容器,进去bash,否则运行程序的退出,容器就停止了。
docker run -i -t centos:7 /bin/bash
说明:
centos:7 :image id
/bin/bash  运行首个程序。

docker run --cap-add sys_ptrace -d -p 8080:80 hub.c.163.com/library/nginx
--cap-add sys_ptrace :加入调试权限,容器里面可以使用gdb
-p 主机8080 映射到 容器的80 端口

//进入一个已经run状态的容器的bash后台,说明:1f2e9753beab image id
docker exec -it 1f2e9753beab /bin/bash    


//查看当前本地镜像
docker images

//删除镜像
docker rmi ed9c93747fe1

//查看当前容器
docker ps -a

//停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)

//如果想要删除所有container的话再加一个指令,此时并没有删除镜像
docker rm $(docker ps -a -q)

**新创建自己的自定义镜像:**
//编写一个docker file,有格式说明
1.Dockerfile   

2.Dockerfile 内容:
FROM 9aec5c5fe4ba    //centos7 的iamge id ,也可以空白
MAINTAINER wsong<wsong@grandstream.cn> //说明

RUN yum install psmisc dbus libedit-devel libuuid-devel libxml2-devel libcurl-devel openssl-devel bison libtool-ltdl -y  //RUN 执行一下,这些东西包含在镜像中

WORKDIR /            //工作目录,COPY 这些自定义东西到镜像中
COPY ./app            /app
COPY ./data          /data
COPY ./cfg           /cfg
COPY ./update        /update
COPY ./lang          /lang

RUN LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/asterisk/lib:/app/asterisk/lib/dbd rpm -ivf /app/mysql-connector-odbc-8.0.21-1.el7.x86_64.rpm --force --nodeps  //继续做一下动作

3.编写.dockerignore 文件 ,忽略当前目录东西到docker的容器(这个东西,可以没有)
/boot
/dev
/docker
/etc
/home
/lib
/lib64
/media
/mnt
/opt
/proc
/root
/run
/sbin
/srv
/sys
/tmp
/usr
/var

//制作镜像  ./是当前目录,必须要有Dockerfile 文件,并把当前目录所有东西传输给docker(除.dockerignore忽略的目录)
4.docker image build -t ucm:latest ./

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页