Docker镜像创建、私有仓库搭建、Docker数据卷、和容器互联互通

Docker创建镜像的三种方法

一、使用已有的镜像容器创建新的镜像

创建步骤:
1.首先本地需要有镜像,或者需要从镜像仓库下载新的镜像。
2.基于镜像创建一个镜像容器。
3.根据容器创建一个镜像。

docker pull xxx:xxx			\\下载一个镜像
docker create -it 镜像名称/镜像id /bin/bash		\\创建一个容器
docker commit -m "新的镜像概述" -a "作者名字" 正在运行的容器id 新的镜像名称:标签

docker制作镜像 ubuntu docker制作镜像库_docker

二、基于已有模板创建镜像

可以从网上下载一些镜像模板,再通过docker命令加载镜像。

cat 模板名称 | docker import - 镜像名称:标签

docker制作镜像 ubuntu docker制作镜像库_docker制作镜像 ubuntu_02

三、使用Dockerfile创建镜像

先查看一下现有的镜像:

docker制作镜像 ubuntu docker制作镜像库_docker制作镜像 ubuntu_03


使用Dock而file,类似于写一个shell脚本。

创建一个文件目录
mkdir aaa

进入目录中,编写Dockerfile
vi Dockerfile

首先需要写明基于哪个镜像
FROM 镜像名称

写明制作这个镜像的作者信息
MAINTAINER 作者名称

写明创建镜像时临时容器内部需要执行的命令
RUN xxxxxx			\\命令是从上而下执行的,但是如果命令写错了Dockerfile就不会往下执行了

开放的容器内部端口
EXPOSE 端口号

复制当前宿主机目录里的文件到容器的内部
ADD 目录下的文件 容器内部的文件路径

CMD为启动容器时容器内部的命令
CMD ["xxx.sh"]
写一个apache的Docker:
FROM centos

MAINTAINER bbs<xxx@qq.com>

RUN yum -y update
RUN yum install -y httpd

EXPOSE 80

ADD index.html /var/www/html/index.html
ADD run.sh /run.sh
RUN chmod 755 /run.sh

CMD ["/run.sh"]

执行docker build -t 镜像名称:标签 .

Dockerfile在执行是会生成临时容器去创建镜像。

docker制作镜像 ubuntu docker制作镜像库_docker制作镜像 ubuntu_04


穿件完毕运行镜像,生成容器:

docker run -d -p 外部访问端口:容器定义的端口 容器id

在宿主机上输入IP地址和端口号就可以访问到容器内部。

docker制作镜像 ubuntu docker制作镜像库_bash_05


Dockerfile一些操作指令

docker制作镜像 ubuntu docker制作镜像库_docker制作镜像 ubuntu_06

Docker私有仓库搭建

1.首先需要下载registry镜像到本地。

docker pull registry:latest

2.在daemon.json中添加仓库路径

vi /etc/docker/daemon.json

"insecure-registries": ["镜像仓库的IP地址:5000"],
如果下面有镜像加速,则注意后面要加逗号。

docker制作镜像 ubuntu docker制作镜像库_docker制作镜像 ubuntu_07


3.重启docker容器。

systemctl restart docker

4.创建registry容器

docker create registry

5.运行容器并与本地存储进行挂载

docker run -d -p 5000:5000 -v /data/registry:/tpm/registry
这里如果宿主机没有/data/registry,则docker会自动创建一个目录路径

6.修改要上传的镜像标签,并上传镜像。

docker tag centos:7 仓库IP地址:5000/centos

docker push 仓库IP地址:5000/centos

docker制作镜像 ubuntu docker制作镜像库_bash_08


7.用curl命令查看镜像是否在仓库里。

curl -XGET http://镜像仓库IP地址:5000/v2/catalog

docker制作镜像 ubuntu docker制作镜像库_bash_09


我的centos镜像已经成功上传。

Docker数据卷

一、容器与宿主机

宿主机为容器提供存储空间

docker run --name 容器名称 -v 宿主机的存储空间:容器的挂载点 -it 镜像名称 /bin/bash

注意如果宿主机这里没有路径,docker会自动创建。

docker制作镜像 ubuntu docker制作镜像库_bash_10

二、容器之间

1.先创建存储容器

docker run --name 容器名称 -v 容器内部提供存储的路径 -it 镜像名称 /bin/bash

docker制作镜像 ubuntu docker制作镜像库_docker_11


2.创建另一个容器挂载之前的存储卷。

docker run --name 容器名称 --volumes-from 存储容器名称 -it 镜像名称 /bin/bash

docker制作镜像 ubuntu docker制作镜像库_docker制作镜像 ubuntu_12


3.进入之前的存储容器查看,测试内容。

docker制作镜像 ubuntu docker制作镜像库_docker_13


docker制作镜像 ubuntu docker制作镜像库_Docker_14

容器之间互联互通

1.先建立一个容器

docker run --name web05 -P -it centos:7 /bin/bash

-P 代表随机端口号 
-p代表指定的端口号

2.建立第二个容器与第一个容器相连

docker run --name web06 -P --link web05:web05 -itd centod:7 /bin/bash
--link代表与web05容器相连

3.进入web06 容器进行ping测试

docker exec -it 容器ID号 /bin/bash

docker制作镜像 ubuntu docker制作镜像库_Docker_15