Centos 7部署docker

一、准备工作

  1. yum包更新到最新

  2. 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

  3. 设置yum源为阿里云

  4. 安装docker

  5. 安装后查看docker版本

  6. 设置ustc的镜像

    ustc是老牌的linux镜像服务器提供者了,还在遥远的ubuntu5.04版本的时候就在用,ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务

    http://lug.ustc.edu.cn/wiki/mirrors/help/docker

    编辑该文件:

    如果是刚安装成功是没有这个文件的,添加该文件:

    在该文件中输入如下内容:

  7. 卸载docker引擎

     

二、Docker 部署

docker启动与停止

 

docker常用命令

  1. 镜像相关命令

    • 查看镜像

      REPOSITORY,镜像名称 TAG,镜像标签 IMAGE ID,镜像ID CREATED,镜像创建时间(不是获取该镜像的日期) SIZE,镜像大小 这些镜像都是存储在docker宿主机的/var/lib/docker目录下

    • 搜索镜像

      如果你需要从网络中查找需要的镜像,可以通过以下命令搜索

      NAME,仓库名称 DESCRIPTION,镜像miaos STARS,用户评价,反应一个镜像的受欢迎程度 OFFICIAL,是否官方 AUTOMATED,自动构建,表示该镜像由docker hub自动构建流程创建的

      问题:

      在搜索镜像的时候会报错:

      解决(dig解析域名信息)

      如果该命令提示

      则执行

      然后在执行

      得到一个IP地址

      然后将任意一个IP地址写入

      内容为

      最后搜索镜像成功。

    • 拉取镜像

      拉取镜像就是从中央仓库中下载镜像到本地

      例如,我要下载centos 7镜像

      此处冒号后面的为tag

    • 删除镜像

      按镜像ID删除

      例如,我要删除centos 7镜像

    • 删除所有镜像

  1. 容器相关命令

    • 查看容器

      查看正在运行的容器

      查看所有容器

      查看最后一次运行的容器

      查看停止的容器

    • 创建于启动容器

      创建容器命令

      -i,表示运行容器

      -t,表示容器启动后会进入起命令行,加入这两个参数后,容器创建就能登录进行,即分配一个伪终端

      --name,为创建的容器命令

      -v,表示目录映射关系(前者是宿主机目录,后者是映射到宿主机的容器目录),可以使用多个-v做多个目录或文件映射,注意,最好做目录映射,在宿主机上做修改,然后共享到容器上

      -d,在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登陆容器,如果只加-i,-t两个参数,创建后就会自动进去容器)

      -p,表示端口映射,前者是宿主机端口,后者是容器内的映射端口,可以使用多个-p做多个端口映射

      -e,代表添加环境变量 (1)交互式方式创建容器

      这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态 退出当前容器

      (2)守护式方式创建容器

      登陆守护式容器方式:

    • 停止与启动容器

      停止容器

      启动容器

    • 文件拷贝

      如果我们需要将文件拷贝到容器内可以使用cp命令

      也可以将文件从容器内拷贝出来

    • 目录挂载

      我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

      创建容器添加-v参数后边为宿主机:容器目录,例如

      默认挂载的路径权限为读写。如果指定为只读可以用:ro,如:/usr/local/myhtml:/usr/local/myhtml:ro

      如果你共享的是多级的目录,可能会出现权限不足的提示。

      这是因为centos7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true来解决挂载的目录没有权限的问题

      查看容器IP地址

      我们可以通过以下命令查看容器运行的各种数据

      也可以直接执行下面的命令直接输出IP地址

    • 删除容器

      删除指定的容器

      运行中的容器不能被删除,要先停止运行中的容器

 

三、Dockerfile编写

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。

对于开发人员:可以为开发团队提供一个完全一致的开发环境

对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了

对于运维人员:在部署时。可以实现应用的无缝移植

命令作用
FROM image_name:tag (eg. centos:7)定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name (eg. itcast)声明镜像的创建者
WORKDIR path_dir(eg. /usr)设置工作目录
RUN command(eg. mkdir /usr/local/java)在构建镜像时执行的命令,是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file(eg. jdk-8u251-linux-x64.tar.gz /usr/local/java/)将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file和ADD相似,但是如果有压缩文件并不能解压
ENV key value(eg. JAVA_HOME /usr/local/java/jdk1.8.0_251)设置环境变量(可以写多条)
LABEL key="value" (eg. name="itcrazy2016")设置标签
VOLUME load_dir (eg. /var/lib/mysql)指定数据的挂在目录,当我们生成镜像的Dockerfile中以Volume声明了匿名卷,并且我们以这个镜像run了一个容器的时候,docker会在安装目录下的指定目录下面生成一个目录来绑定容器的匿名卷,就是说当Dockerfile中声明了匿名卷,但是run的时候没有使用-v绑定匿名卷的话,那么docker就会在安装docker的机器/var/lib/docker/volumes这个目录下创建一个目录来绑定匿名卷
CMD command(eg. ["mysql"])容器启动的时候默认会执行的命令,若有多个CMD命令,则最后一个生效
格式1:CMD <command> (shell格式)
格式2:CMD ["executable", "param1", "param2"] (exec格式,推荐使用)
格式3:CMD ["param1", "param2"] (为ENTRYPOINT指令提供参数)
ENTRYPOINT command(eg. ["docker-entrypoint.sh"])和CMD的使用类似,和CMD的不同的是docker run执行时,CMD会覆盖之前的命令,而ENTRYPOINT不会
格式1:ENTRYPOINT <command> (shell格式)
格式2:ENTRYPOINT ["executable", "param1", "param2"] (exec格式,推荐格式)
EXPOSE port(eg. 3306)指定镜像要暴露的端口,启动镜像时,可以使用-p将该端口映射给宿主机

使用docker build -t image_name:tag .来构建镜像,默认使用PATH/Dockerfile文件来构建,但是可以通过-f Dockerfile全路径来指定Dockerfile文件。

Dockerfile中RUN pwd无效时,在 docker build 命令前面增加 DOCKER_BUILDKIT=0

 

四、Docker实战

mysql的部署

  1. 拉取mysql镜像

  2. 创建容器

    -p,代表端口映射,格式为宿主机映射端口:容器运行端口

    -e,代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码

  3. 进入mysql容器

  4. 登陆mysql

  5. 远程登陆mysql

    在输入密码的界面直接回车就可以了

 

tomcat的部署

  1. 拉取tomcat镜像

    tomcat:7代表tomcat的版本,jre7表示jre的版本

  2. 创建容器

 

nginx的部署

  1. 拉取nginx镜像

    tomcat:7代表tomcat的版本,jre7表示jre的版本

  2. 创建容器

 

redis的部署

  1. 拉取redis镜像

  2. 创建容器

consul的部署

https://learn.hashicorp.com/tutorials/consul/docker-container-agents?in=consul/docker

kafka的部署

 

openresty的部署

openssl的部署

 

MinIo的部署

 

dockercarlosr

1071700669@qq.com

1qaz!QAZ2wsx@WSX