Centos安装Docker以及Docker的使用

本文详细介绍了Docker的安装步骤,包括配置yum仓库、安装、验证、启动Docker,以及如何配置镜像仓库和使用Dockerfile构建镜像。同时讲解了Docker-compose的使用,如安装、编写docker-compose.yml文件及部分容器启动命令示例。
摘要由CSDN通过智能技术生成

Docker的安装

安装

Docker安装步骤的官网地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/

第一步:配置yum仓库

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

第二步:开始安装

yum install -y docker-ce docker-ce-cli containerd.io

第三步:验证docker是否安装成功

docker -v       #查看docker的版本信息

第四步:启动Docker

systemctl start docker

配置镜像仓库

docker默认的镜像仓库地址是https://hub.docker.com,由于该地址服务器不在内地,访问的速度可能会有一定的影响。所以我们会经常将docker默认的镜像仓库换成阿里巴巴或者163的镜像仓库地址,以便加快我们的访问速度。

第一步:在 /etc/docker/目录下是没有 daemon.json文件的,要进入到 /etc/docker/ 目录下执行 touch daemon.json 命令创建 daemon.json文件

# 进入到 /etc/docker/ 目录下
cd /etc/docker
# 执行 touch  daemon.json命令创建 daemon.json文件
touch  daemon.json

第二步:在daemon.json文件中加入如下内容

{
  "registry-mirrors": ["https://zbhswmwr.mirror.aliyuncs.com"]
}

第三步:执行如下命令

sudo systemctl daemon-reload                  #重新加载守护进程
sudo systemctl restart docker                 #重启docker

Docker的使用

1、Docker拉取镜像

docker pull 镜像名:版本号

2、Docker运行镜像——安装容器

# -i UI交互的意思,-t 终端的意思,-d 以守护进程的方式让终端交互界面在后台运行,是docker pull 和docker create的合并
# 如果不以守护进程的方式让终端交互界面在后台运行,docker引擎觉得容器没事儿干,会自动将容器关闭掉
# -p 宿主机端口:容器端口  将容器内部端口映射到宿主机的端口,访问宿主机端口就像是在访问容器端口
# -v 宿主机目录或文件:容器目录或文件 创建数据卷[相当于是在容器上开了一个口子,宿主机可以通过这个口操作容器中对应的目录或文件]
docker run -i -t  -d -p 宿主机端口:容器端口 -v 宿主机目录或文件:容器目录或文件  /bin/bash

3、Docker进入容器

# 打开一个终端进入/重新进入'容器'
docker exec -i -t 容器ID /bin/bash

4、Docker查看所有的镜像

docker images

5、Docker移除镜像

docker rmi dcoker 镜像ID

6、Docker查看所有的容器

# -a查看所有的容器,如果不加,只会查看到正在运行的容器
# -q只查看容器的id
docker ps -a

7、Docker关闭正在运行的容器

# $(docker ps q)表示在docker执行stop/kill命令前先执行$(docker ps -q)查看所有正在运行的容器的id的命令
# docker kill 容器id/容器name 容器id/容器name 容器id/容器name ...
docker stop $(docker ps -q)
或者
docker kill $(docker ps -q)

8、Docker启动一个已经关闭的容器

docker start 容器名或容器id

9、Docker移除容器(只能移除已经关闭的)

# 移除所有已经关闭的容器
# $(docker ps -aq)表示在docker执行rm命令前先执行$(docker ps -aq)查看所有容器的id的命令
docker rm $(docker ps -aq)
# 移除指定的已经关闭的容器
docker rm 容器id/容器name 容器id/容器name 容器id/容器name ...

10、Docker将宿主机文件拷贝到容器中

docker cp 本地文件目录 容器ID:/路径

11、查看容器运行中产生的日志

docker logs -f 容器id
/# 查看日志,也可通过tail -f /var/lib/docker/containers/容器id/容器id.json.log

12、Docker查看容器分配的ip

docker inspect 容器名

Docker-file的使用

Dockerfile是构建镜像的文件,镜像是通过Dockerfile做出来的,描述的是镜像是由什么东西一步步构成的,是镜像的描述文件

Dockerfile的基本语法(示例)

# 基础镜像来自于哪个个镜像
FROM centos:7
# 作者信息
MAINTAINER 1064336228@qq.com
# 执行创建文件夹命令
RUN mkdir -p /data/jdk
RUN mkdir -p /data/tomcat
# 将宿主机中的文件复制到容器中,注意:文件需要和Dockerfile在同一个目录下
COPY ./jdk-8u381-linux-x64.tar.gz /data/packge/
# 执行解压命令
RUN tar -zxvf /data/packge/jdk-8u381-linux-x64.tar.gz -C /data/
RUN mv /data/jdk1.8.0_381/* /data/jdk/
RUN rm -rf /data/jdk1.8.0_381
# 配置环境变量
ENV JAVA_HOME=/data/jdk
ENV PATH=$JAVA_HOME/bin:$PATH
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN java -version
# 将宿主机中的文件复制到容器中,注意:文件需要和Dockerfile在同一个目录下
COPY ./apache-tomcat-8.5.75.tar.gz /data/packge/
# 执行解压命令
RUN tar -axvf /data/packge/apache-tomcat-8.5.75.tar.gz -C /data/
RUN mv /data/apache-tomcat-8.5.75/* /data/tomcat/
RUN rm -rf /data/apache-tomcat-8.5.75
# 暴露端口
EXPOSE 8080
# 创建数据卷
VOLUME /data/tomcat/webapps /data/tomcat/webapps
# 指定容器启动时的默认命令,CMD 在docker run 时运行
# 最终会执行的命令:/data/tomcat/bin/catalina.sh run
# CMD ["<可执行文件或命令>","<param1>","<param2>",...] 
CMD ["/data/tomcat/bin/catalina.sh","run"]

如上代码所示,FROM、MAINTAINER、RUN、WORKDIR、CMD均为关键字,按照标准的规范需要大写;FROM centos表示基础镜像是centos,然后会启动centos这个容器,执行第二行代码又会生成新的镜像文件,然后提交,周而复始。

关键字含义
FROM指定基础镜像,用于后续的指令构建(每一个镜像都必须建立在一个基础镜像的基础上)
MAINTAINER指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令)
LABEL添加镜像的元数据,使用键值对的形式
RUN在构建过程中在容器中所要执行的Linux命令
EXPOSE声明容器运行时监听的特定网络端口
ENV在容器内部设置环境变量
ADD将文件、目录或远程URL复制到镜像中(将文件拷贝到镜像中并解压、删除)
COPY将文件或目录复制到镜像中(将文件拷贝到镜像中,没有解压、删除的功能)
VOLUME为容器创建数据卷
WORKDIR进入到容器后进入到哪个目录
CMD容器启动时候执行的命令(可以被覆盖),CMD 在docker run 时运行
ENTRYPOINT设置容器创建时的主要命令(不可被覆盖)

可参考:https://www.runoob.com/docker/docker-dockerfile.html

Docker-compose的使用

在开发一个应用的时候,我们需要其他的很多东西,例如数据库,nginx,网站应用等很多的环境,而docker又推崇的是每一个容器只运行一个进程,那么我们势必得很多的容器,那么我们得通过docker build命令一个个的构建镜像,然后在通过docker run命令启动一个个容器,那么当我们修改了应用后,我们又得去重复上面的操作。而且容器与容器之间存在着很多的依赖,我们在操作的时候还得去考虑先启动哪个容器,在启动另外一个容器,这些操作和步骤都得花上大量的精力。那么可以通过docker-compose一键式部署和启动容器。

docker-compose是一种容器编排技术,我们可以编写一个docker-compose.yml文件,在文件中编排好我们的服务,只用通过一个命令解决重复使用docker run命令一个个启动和创建容器。

安装docker-compose

第一步:运行如下命令获取最新版的docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 下载网址:https://github.com/docker/compose/releases

第二步:给二进制文件加上执行权限

chmod +x /usr/local/bin/docker-compose

第三步:在 /usr/bin 目录下的一个docker-compose命令的软连接

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

第四步:查看docker-compose版本

docker-compose --version

编写docker-compose文件

# 这个版本的值是依据 docker 的版本来的,参考地址: https://docs.docker.com/compose/compose-file/
version: '3.8'
# docker-compose认为每个容器是一个服务
services:
  # elasticsearch是自定义的服务名
  elasticsearch:
    # 该容器对应的镜像
    image: elasticsearch:7.17.3
    # 宿主机端口和该容器端口的映射关系
    ports:
      - 9200:9200
      - 9300:9300
    # 启动容器时的环境变量
    environment:
      - 'discovery.type=single-node'
    # 容器名称
    container_name: elasticsearch
    # 容器数据卷
    volumes:
      - /data/elasticsearch/analyzer:/usr/share/elasticsearch/plugins
  kinaba:
    image: kibana:7.17.3
    ports:
      - 5601:5601
    environment:
      - ELASTICSEARCH_HOSTS=["http://elasticsearch:9200"]
    container_name: kibana

yml 配置指令参考

部分容器启动命令

1、Docker-MySQL

docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=指定登录MySQL的密码 -d -p 宿主机端口(3306):容器端口(3306)
# MySql相关的文件在容器中的位置:
# MySql配置文件在容器中的位置:/etc/mysql/my.cnf
# Mysql数据文件在容器中的位置:/var/lib/mysql

2、Docker-redis

docker run --name redis-master -d -p 宿主机端口(6379):容器端口(6379)  redis redis-server /usr/local/etc/redis/redis.conf
# Redis相关的文件在容器中的位置:
# Redis配置文件在容器中的位置:/usr/local/etc/redis/redis.conf

可参考:http://www.mobiletrain.org/about/BBS/131670.html

3、Docker-nginx

docker run --name nginx -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/static/:/data/nginx/static/ -v /data/nginx/logs/:/var/log/nginx/ -d nginx:latest

主机                                              docker
/data/nginx/static/html                           /usr/share/nginx/html #网页文件
/data/nginx/conf/nginx.conf                       /etc/nginx/nginx.conf#配置文件
/data/nginx/logs                                  /var/log/nginx#日志文件
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值