1、安装docker并配置镜像加速。
Ubuntu操作过程。
root@ubuntu:~# ip a
root@ubuntu:~# vi /etc/apt/sources.list (修改阿里源)
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
root@ubuntu:~# apt-get update (更新)
root@ubuntu:~# apt update;apt-get -y install apt-transport-https ca-certificates curl software-properties-common(安装必要软件)
root@ubuntu:~# curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - (下载证书)
root@ubuntu:~# sudo add-apt-repository “deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
root@ubuntu:~# apt-get update
root@ubuntu:~# apt-get -y install docker-ce(安装最新版docker)
root@ubuntu:~# docker version
root@ubuntu:~# docker run hello-world
CentOS版本安装过程
#yum install docker -y (dnf install podman)
#systemctl start docker
#docker version
#docker run hello-world
#vim /etc/containers/registries.conf (修改拉取镜像的地址顺序,提高速度)
配置镜像加速
ubuntu为例,注册阿里云加速地址。
root@ubuntu:~# mkdir -p /etc/docker
root@ubuntu:~# tee /etc/docker/daemon.json <<- ‘EOF’
{
“registry-mirrors”: [“https://si7y70hh.mirror.aliyuncs.com”]
}
EOF
{
“registry-mirrors”: [“https://si7y70hh.mirror.aliyuncs.com”]
}
root@ubuntu:~# systemctl daemon-reload
root@ubuntu:~# systemctl restart docker
2、dockerfile常用指令总结。
什么是Dockerfile?
dockerfile用于快速有序且直观地完成对镜像的定制。
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
Dockerfile常用指令
FROM
FROM命令指定了基础镜像,比如FROM ubuntu,则表示你的镜像的基本镜像来自ubuntu
MAINTAINER
maintainer意为维护者,用来标识维护者信息(作者)
RUN
格式为 RUN 或`RUN [“executable”, “param1”, “param2”],命令较长时可以使用****换行
CMD
格式为
CMD [“executable”, “param1”, “param2”]
CMD command param1 param2(在/bin/sh中执行)
CMD [“param1”, “param2”](提供给ENTRYPOINT的默认参数)
如果用户启动容器时指定了运行的指令,则会覆盖掉CMD的指令
EXPOSE
告诉Docker容器需要暴露的端口号,这样在启动时可以通过-P或-p来指定对应的端口映射
例:EXPOSE 20 8080
ENV
指定环境变量,会被后续的RUN指令使用,并在容器运行时保持
如ENV PG_VERSION 9.3.4
ADD
ADD
该指令可以复制文件或目录到容器,可以是Dockerfile所在目录的相对路径,也可以是URL,也可以是tar(会自动解压)。
COPY
COPY
复制本机的为容器的,相比ADD,它不支持URL,自动解压。
ENTRYPOINT
入口点,格式为ENTRYPOINT [“executable”, “param1”, “param2”] 或ENTRYPOINT command param1 param2(sh)
入口点只能被配置一个,在容器启动时会自动被执行,和CMD相比,它的特点是不会被用户提供的命令覆盖
VOLUME
指定数据挂载,创建数据卷
格式为:
VOLUME ["<路径1>", “<路径2>”…]
VOLUME <路径>
USER
指定运行容器时的用户名或UID,后续的RUN也会使用指定用户,可以通过这种方式限制权力
WORKDIR
指定WORKDIR,方便后续的RUN指令执行,后续的相对路径依据与WORKDIR
ONBULID
当该镜像将来被用来作为其它镜像的基础镜像时所执行的操作指令(新的Dockerfile使用From thisImage)
如ONBULID ADD . /app/src,ONBULID RUN echo “onbulid”
docker build命令依据Dockerfile创建镜像
docker build path,会自动搜索path下的Dockerfile,并将Dockerfile路径下所有的目录和文件发送到Docker服务端,由服务端来创建镜像
通过-t 可以指定生成的镜像的标签
使用.dockerignore 忽略路径下的目录和文件
每一行添加一条匹配模式,语法类似.gitignore
3、基于centos7制作tomcat镜像
#alias rmc=‘docker ps -qa |xargs docker rm -f’
(docker rmi IMAGE ID)
docker 如何删除none镜像
删除none的镜像,要先删除镜像中的容器。要删除镜像中的容器,必须先停止容器。
$ docker images
$ docker rmi $(docker images | grep “none” | awk ‘{print $3}’)
直接删除带none的镜像,直接报错了。提示先停止容器。
$ docker stop $(docker ps -a | grep “Exited” | awk ‘{print $1 }’) //停止容器
$ docker rm $(docker ps -a | grep “Exited” | awk ‘{print $1 }’) //删除容器
$ docker rmi $(docker images | grep “none” | awk ‘{print $3}’) //删除镜像
基于alpine制作tomcat镜像的资料比较少 ,改用基于centos7制作tomcat镜像
3.1自定义Centos系统基础镜像
3.2构建JDK镜像
3.4从JDK镜像构建tomcat 8 Base镜像
3.5 构建业务镜像
3.6测试
4、利用桥接实现不同宿主机间容器互联。
根据课程内容,跨宿主机的容器之间网络互联,有四种方式实现。
(1)利用网桥实现跨宿主机的容器间互联
(2)利用NAT实现跨主机的容器间互联
(3)利用Open vSwitch实现跨主机的容器间互联
(4)使用weave实现跨主机的容器间互联
两台宿主机:
首先安装bridge-utils
设置docker0
容器1:
容器2:
实验实现,不过这个方式感觉应用起来不太方便,单台配置容器里的IP地址问题待优化,比如相同网段的不通IP段。