Centos安装Docker以及Docker的使用

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 ["<可执行文件或命令>","","",...] 
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的使用

部分容器启动命令

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

你可能感兴趣的:(centos,docker,linux)