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
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 容器名
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
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