【课程回顾】容器的启动命令是什么?-compose

Dockerfile+docker-compose介绍 |课程回顾

1、容器的启动命令是什么?

sudo docker start 容器名称/容器ID

2、删除图片的命令是什么?

sudo docker rmi 镜像名称

|预览检查

1、Dockerfile中的FROM是什么意思?

FROM 后面是基于什么镜像来构建镜像 

2、Dockerfile中的RUN是什么意思?

RUN 后面紧跟shell要执行的命令

|章节目标 Dockerfile 概念。 Dockerfile 的文件命令介绍。码头工人撰写概念。 docker-compose的使用介绍。设置mysql远程登录|章节重点、难点

1),关键点

创建 Dockerfile 文件。

2)、难点

Dockerfile的文件介绍。

|知识点讲解Dockerfile的概念

1、什么是 Dockerfile

​ Dockerfile 是结合镜像的命令的文本文档。任何命令都可以使用命令行调用。 Docker通过读取Dockerfile中的指令自动生成镜像。

几种生成图像的方法

图片[1]-【课程回顾】容器的启动命令是什么?-compose-老王博客

2、基本结构

​一般分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时的执行指令

Dockerfile文件介绍1、FROM指定基础镜像端口镜像是什么意思,必须是第一条指令

格式:

FROM  [AS ]
FROM :[] [AS ]
FROM [@] [AS ]

例子:

FROM centos:7
# 编译阶段 命名为 centos7
FROM centos:7 as centos7
ARG CODE_VERSION=7
FROM centos:${CODE_VERSION}

注意:标签或摘要是可选的。如果不使用这两个值,则使用最新版本的基础镜像。

2、MAINTAINER 指定作者

格式:

MAINTAINER 

例子:

MAINTAINER hary_lei@qq.com
MAINTAINER hary_lei
sudo docker inspect dmw_redis #查看作者信息

3、RUN 命令构建镜像

p>

RUN 用于在镜像容器中执行命令。它有以下两种命令执行方式:

shell执行格式:

RUN <command>

exec执行格式:

RUN ["executable", "param1", "param2"]

例子:

RUN rm apache-tomcat-8.5.43.tar.gz      #shell执行

4、ADD 将本地文件添加到容器中

ADD 将本地文件添加到容器中,tar 类型的文件会自动解压(网络压缩资源不会被解压),可以访问网络资源。

语法:

ADD <src>... <dest>
ADD ["",... ""] 用于支持包含空格的路径

例子:

ADD apache-tomcat-8.5.43.tar.gz /usr/local/   
# apache-tomcat-8.5.43.tar.gz添加到 usr/local下 ,可以使用* ?,*表示任意,?表示一个

< @5、COPY 将本地文件添加到容器中

COPY类似于ADD,但不会自动解压,无法访问网络资源。

6、CMD 容器启动时调用

语法:

CMD ["executable","param1","param2"]
CMD command param1 param2

例子:

CMD ["/usr/bin/supervisord"]
CMD /usr/sbin/sshd -D

7、ENTRYPOINT 将容器配置为可执行

语法:

ENTRYPOINT ["executable", "param1", "param2"] 
ENTRYPOINT command param1 param2

例子:

ENTRYPOINT ["java","-server","-Xms64m","-Xmx128m","-jar","dm-base-consumer-1.0-SNAPSHOT.jar"]

注意:ENTRYPOINT 与 CMD 非常相似,除了通过 docker run 命令中指定的任何参数,将再次作为参数传递给 ENTRYPOINT

Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令

8、ENV 设置环境变量

语法:

ENV <key> <value>
ENV <key>=<value> ... 

例子:

ENV JAVA_HOME=/usr/local/java/jdk1.8.0_212
ENV PATH=$JAVA_HOME/bin:$PATH

9、EXPOSE 指定对外交互的端口

p>

语法:

EXPOSE <port> [<port>...]

图片[2]-【课程回顾】容器的启动命令是什么?-compose-老王博客

例子:

EXPOSE 22
EXPOSE 8080

注意:EXPOSE 不允许容器的端口访问主机。为了使其可访问,您需要在 docker run 运行容器时使用 -p 发布这些端口端口镜像是什么意思,或者使用 -P 参数发布 EXPOSE 导出的所有端口。

10、WORKDIR指定工作目录,类似cd命令

语法:

WORKDIR /path/to/workdir

例子:

WORKDIR /usr/local/

注意:通过WORKDIR设置工作目录后,Dockerfile中的后续命令,如RUN、CMD、ENTRYPOINT、ADD、COPY等都在该目录下执行。

11、USER在运行容器时指定用户名或UID,后续RUN也会使用指定用户

语法:

USER user
USER user:group
USER uid
USER uid:gid
USER user:gid
USER uid:group

例子:

USER elsearch

注意:使用USER指定用户后,Dockerfile中以下命令RUN、CMD、ENTRYPOINT都会使用该用户。

12、说明centos、jdk、tomcat的Dockerfile文件

图片[3]-【课程回顾】容器的启动命令是什么?-compose-老王博客

图片[4]-【课程回顾】容器的启动命令是什么?-compose-老王博客

图片[5]-【课程回顾】容器的启动命令是什么?-compose-老王博客

13、使用 Dockerfile 构建镜像

语法:

sudo docker build [OPTIONS] PATH | URL | -

选项说明:

例子:

#进入centos7文件的目录下运行
sudo docker build -t yi/centos7-ssh .    #.指的是当前目录下的Dockerfile文件
sudo docker build -t yi/centos7-jdk8u212 .
sudo docker build -t yi/centos7-tomcat8 .

14、码头工人问题

问题 1:

使用时出现如下错误:在容器中ping

ping: : 名称或服务未知

解决方案:

vi /etc/resolv.conf   #修改DNS
#设置如下值
nameserver 8.8.8.8
nameserver 114.114.114.114

问题 2:

无法使用xshell登录容器

使用以下命令创建容器

sudo docker run -it -p 8080:8080 -p 23:22 --privileged=true --name tomcat8 web-demo /usr/sbin/init

修改 sshd_config 文件

vi /etc/ssh/sshd_config  
#Port 22    此处注释去了
#PermitRootLogin yes  此处注释去了

重启ssh服务

systemctl start sshd.service   #启动服务
systemctl restart sshd.service   #重启动服务

docker-compose 概念1、什么是 docker-compose

docker-compose 是一个 Docker 容器编排工具,它定义并运行了很多对于容器的应用,可以一个命令启动多个容器。使用 docker-compose 不再需要使用 shell 脚本来启动容器。

docker-compose的使用介绍1、安装docker-compose

ubuntu 安装

sudo apt install docker-compose -y 

centos7 安装

sudo yum -y install epel-release
sudo yum -y install python-pip   #安装pip
sudo pip install --upgrade pip   #pip进行升级
sudo pip install docker-compose  #安装 如此条不能安装使用下面的
#pip install docker-compose --ignore-installed requests
sudo docker-compose -version  #查看版本
#第二种安装
#创建用户组docker
sudo groupadd docker
sudo gpasswd -a dmw docker
sudo service docker restart
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo docker-compose --version

2、解析 docker-compose.yml 文件

version: '2'    #表示该 Docker-Compose 文件使用的是 Version 2 file
services:
  redis:           # 指定服务名称
    build: /home/px2/envdm/Redis/    #指定Dockerfile所在路径
    environment:                     #定义环境变量
      - TZ=Asia/Shanghai             #指定时区
    mem_limit: 300M                 # 指定限制内存大小
    ports:                          # 指定端口映射
     - "6379:6379"
     
  elasticsearch:   # 指定服务名称
    build: /home/px2/envdm/Elasticsearch/    #指定 Dockerfile所在路径
    environment:
      - TZ=Asia/Shanghai
    mem_limit: 300M
    ports:                   # 暴露端口信息 - "宿主机端口:容器暴露端口"
     - "9200:9200"
     - "9300:9300"
     
networks: 
   default:
      external: 
        name: envdm      
        #使用已存在的网络  如果前面没有使用docker network  create envdm网络此处则会报错

3、docker-compose 命令使用

#ps
sudo docker-compose ps   #列出所有运行容器
#logs
sudo docker-compose logs   #查看服务日志输出
#build
sudo docker-compose build  #构建或者重新构建服务
#start
sudo docker-compose start envdm_mysql_1  #启动指定服务已存在的容器
#stop
sudo docker-compose stop envdm_mysql_1   #停止已运行的服务的容器
#rm
sudo docker-compose rm envdm_mysql_1   #删除指定服务的容器
#up
sudo docker-compose up envdm_mysql_1   #构建、启动容器envdm_mysql_1
sudo docker-compose up -d #把当前目录下的docker-compose.yml中的所有服务构建镜像、启动容器
#kill
sudo docker-compose kill envdm_mysql_1  #通过发送 SIGKILL 信号来停止指定服务的容器

4、构建基础服务

如下图:

p>

图片[6]-【课程回顾】容器的启动命令是什么?-compose-老王博客

在linux的这个目录下使用如下命令构建基础服务:

sudo docker-compose up -d

可能会出现一些安装包网络连接异常,或者版本没有问题。 docker-compose.yml文件中指定的Dockfile文件路径不对,需要注意问题。

设置mysql远程登录1、登录容器

sudo docker exec -it envdm_mysql_1 /bin/bash #进入mysql容器

2、登录mysql数据库

mysql -uroot   #登录

3、切换数据库

use mysql

4、修改root密码为123456

update user set password=password('123456') where user='root' and host='localhost';

<@5、允许远程登录root用户

grant all privileges on *.* to root@'%' identified by '123456' with grant option;

如下图:

图片[7]-【课程回顾】容器的启动命令是什么?-compose-老王博客

6、设置其他数据库配置

#爱旅行要设置最大连接数
#显示所有连接数  sleep状态是处于连接状态
show processlist;
#查看最大连接数
show variables like 'max_connections';
#修改最大连接数
set global max_connections=3000;
#显示非交互的等待时间
show global variables like 'wait_timeout';
#修改交互等待时间  单位秒
set global wait_timeout = 120;

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论