Dcker的使用

          Docker

.           一、容器

容器是一种基础工具;泛指任何可用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳、存储、运输物品;

人类使用容器的历史至少有十万年,甚至有数百万年的历史

如:瓶、罐、箱、桶、袋

.            二、LXC

主机级虚拟化

       Type-I:

       Type-II:VMware、kvm、zen

 Linux Namespace:

UTS:以名称空间为单位进行隔离,在同一个内核上创建多个名称空间,每个空间可以有单独的名称

Mount:也是名称空间,可以把挂载的文件系统切分为多个

IPC:内核级管理的资源,可以再内核切换为Docker,每一个里边的进程可以IPC通信,但是不能跨边界

PID:不同用户的进程就是通过pidnamespace隔离开的,且不同 namespace 中可以有相同PID

User:每个container可以有不同的 user 和 group id, 也就是说可以以container内部的用户在container内部执行程序而非Host上的用户。

Net:有了 pid namespace, 每个namespace中的pid能够相互隔离,但是网络端口还是共享host的端口。网络隔离是通过netnamespace实现的

nmp

machine + swarm + compose

mesos + marathon

kubernetes à k8s

.           三、Docker 的安装使用

安装

       清华大学镜像网源:wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

       [root@C7-1 yum.repos.d]#vim docker-ce.repo

       %s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@g         # 下载后是docker的官方源,修改为清华大学源

       yum install docker-ce            # 安装

配置文件

       docker-ce:/etc/docker/daemon.json

docker镜像加速

       docker cn

       阿里云加速器

       中国科技大学

{

  "registry-mirrors": ["https://registry.docker-cn.com"]

}

配置加速

[root@C7-1 ~]#mkdir /etc/docker

[root@C7-1 ~]#vim /etc/docker/daemon.json

docker

       docker version

       docker info

常用操作

docker search:搜索

docker pull:下载到本地

              [root@C7-1 ~]#docker pull quay.io/coreos/flannel:v0.11.0-arm64

docker images:

       [root@C7-1 ~]#docker image pull nginx:1.14-alpine        # 下载镜像

       [root@C7-1 ~]#docker image ls        # 查看下载的镜像

       docker container:

                     docker container run           # 创建并启动

                            -t:打开tty终端

                            -i:交互式

                            --name:名字

                            --network:网络

                            --rm :停止容器后直接删除

                            -d --detach:后台

                     docker container exec

       docker commit    # 制作镜像

              -a --author string:作者

              -c --change list:修改原有基础镜像的指令

              -p --pause:现将容器暂停

       docker tag         # 打标签

       docker push

       docker login

              -u,--username    用户名   registry.cn-hangzhou.aliyuncs.com   后便可以跟服务器地址

       docker logout

       docker save    导出

              -o:名字

       docker load    导入

               

docker network

              docker network ls   # 查看网络

[root@C7-1 ~]#docker inspect web1

使用例子

[root@C7-1 ~]#docker pull busybox    # 下载

[root@C7-1 ~]#docker image pull nginx:1.14-alpine

[root@C7-1 ~]#docker container run --name b1 -it busybox:latest    # latest是标签

[root@C7-1 ~]#docker container run --name web1 -d nginx:1.14-alpine    # 后台运行

[root@C7-1 ~]#docker container run --name kvstor1 -d redis:4-alpine    # 如果没有则会从网络中下载

[root@C7-1 ~]#docker container exec -it kvstor1 /bin/sh     # 进入容器的终端

  

联合挂载使用到的文件

       Aufs(advanced multi-layered unfication filesystem):高级多层统一文件系统,Aufs是之前UnionFS的重新实现,由Junjiro Okajima开发

       Storage:现在Centos7使用的就只这种文件系统,overlay2需要建立在也已经用的文件系统上,所以在Cetno7中,前端使用overlay2后端使用xfs

 

Registry

       由某特定的docker镜像的所有迭代版本组成的镜像仓库

       每个仓库明可以包含多个tag,每个tag对应一个镜像,每个镜像可以对应多个tag

制作镜像:docker commit

       生成途径

              dockerfile

              基于容器制作

              Docker Hub automated builds

       居于容器制作:

[root@C7-1 ~]#docker run --name b1 -it busybox    # 制作一个容器

/ # mkdir -p /data/html      # 创建目录

/ # echo "<h1>busybox httpd server.</h1>" > /data/html/index.html   # 创建主页文件

# 再开一个终端,应为如果退出的话容器就会停止

[root@C7-1 ~]#docker commit -p b1           # -p暂停容器

[root@C7-1 ~]#docker image ls   # 查看

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE

<none>                   <none>              7cfd827c15d4        6 seconds ago       1.2MB

[root@C7-1 ~]#docker tag 7cfd827c15d4 p-pp/busybox_httpd:v0.1-1    # 打标签

[root@C7-1 ~]#docker image ls   # 打完标签后查看

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE

p-pp/busybox_httpd       v0.1-1              7cfd827c15d4        2 minutes ago       1.2MB

[root@C7-1 ~]#docker tag p-pp/busybox_httpd:v0.1-1 p-pp/busybox_httpd:latest   # 打一个新的标签

[root@C7-1 ~]#docker image ls    # 再次查看,可以看到两个,Id是一样的

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE

p-pp/busybox_httpd       latest              7cfd827c15d4        4 minutes ago       1.2MB

p-pp/busybox_httpd       v0.1-1              7cfd827c15d4        4 minutes ago       1.2MB

 

[root@C7-1 ~]#docker commit  -a "Mrxuan<www.p-pp.cn>"  -c 'CMD [ "/bin/httpd","-f","-h","/data/html" ]' -p b1 p-pp/busybox_httpd:v0.2-1

[root@C7-1 ~]#docker run --name p2 p-pp/busybox_httpd:v0.2-1

 

# 再打开一个终端,使用命令查看ip

[root@C7-1 ~]#docker inspect p2

                    "Gateway": "172.17.0.1",

                    "IPAddress": "172.17.0.3",

[root@C7-1 ~]#curl 172.17.0.3

<h1>busybox httpd server.</h1>

 

将自己的docker镜像保存至dockerhub:docker push 

申请账号:https://hub.docker.com/signup

 

       示例:

[root@C7-1 ~]#docker login -u dong9205   #登录,用户名为dong9205

Password:

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

 

Login Succeeded    # 登录成功的提示

[root@C7-1 ~]#docker image ls    # 名字要和创建的仓库名一致

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE

dong9205/busybox         v0.2-1              8f6be032912d        31 minutes ago      1.2MB

dong9205/busybox         v0.1-1              7cfd827c15d4        About an hour ago   1.2MB

[root@C7-1 ~]#docker push dong9205/busybox   # 像dockerhub推送

 

       镜像推到阿里云仓库

注册阿里云账号,之后打开网站:https://cr.console.aliyun.com,或https://dev.aliyun.com

 

 

[root@C7-1 ~]#docker tag dong9205/busybox:v0.2-1 registry.cn-hangzhou.aliyuncs.com/dong9205/busybox:v0.2-1   #标签更改一致

[root@C7-1 ~]#docker logout   # 退出dockerhub的账号

[root@C7-1 ~]#docker login --username=socket轩 registry.cn-hangzhou.aliyuncs.com    # 登录,密码为单独设置的密码

Password:

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

 

Login Succeeded

[root@C7-1 ~]#docker push registry.cn-hangzhou.aliyuncs.com/dong9205/busybox   # 推送

 

  

镜像的导入导出

[root@C7-1 ~]#docker save -o myimages.gz dong9205/busybox:v0.2-1 dong9205/busybox:v0.1-1

[root@C7-1 ~]#docker load -i myimages.gz
原文地址:https://www.cnblogs.com/-xuan/p/10831079.html