# 1. yum 包更新到最新
yum update
# 2. 安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3. 设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4. 安装docker【docker-ce: 社区版,免费;docker-ee:企业版,收费】
yum install docker-ce -y
# 5. 安装后查看docker版本
docker -v
# 执行如下命令
mkdir /etc/docker
vi /etc/docker/daemon.json
内容如下
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
# 查看docker服务状态
systemctl status docker
# 设置开机启动docker服务
systemctl enable docker
# 查看docker概要信息
docker info
# 查看docker帮助文档
docker --help
docker images: 查看镜像
docker search: 搜索镜像
docker pull: 拉取/下载镜像
docker rmi: 删除镜像
# 查看镜像可以使用如下命令:
docker images
# 如果你需要从网络中查找需要的镜像,可以通过以下命令搜索
docker search 镜像名称
# 拉取镜像就是从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本 命令如下:
docker pull 镜像名称
# 拉取centos 7
docker pull centos:7
# 拉取centos 最后版本镜像
docker pull centos:latest
# 按照镜像id删除镜像
docker rmi 镜像ID
# 删除所有镜像(谨慎操作)
docker rmi `docker images -q`
- 查看正在运行容器: docker ps
- 查看所有容器: docker ps -a
- 查看最后一次运行的容器: docker ps –l
可以基于已有的镜像来创建容器,创建与运行容器使用命令: docker run
-i: 表示运行容器
-t: 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name: 为创建的容器命名。
-v: 表示目录映射关系(前者是宿主机目录,后者是容器的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d: 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p: 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射。
# 先拉取一个镜像;这一步不是每次启动容器都要做的,而是因为前面我们删除了镜像,
# 无镜像可用所以才再拉取一个
docker pull centos:7
# 创建并启动名称为 mycentos7 的交互式容器
# 容器名称 mycentos7
# 镜像名称:TAG (centos:7) 也可以使用镜像id (5e35e350aded)
# /bin/bash: 进入容器命令行
docker run -it --name=mycentos7 centos:7 /bin/bash
# 创建并启动守护式容器
# 容器名称: mycentos2
# 镜像名称:TAG (centos:7) 也可以使用镜像id (5e35e350aded)
docker run -di --name=mycentos2 centos:7
# 进入容器:
# docker exec -it container_name (或者 container_id) /bin/bash
# exit退出时,容器不会停止
docker exec -it mycentos2 /bin/bash
# 停止正在运行的容器: docker stop 容器名称|容器ID
docker stop mycentos2
# 启动已运行过的容器: docker start 容器名称|容器ID
docker start mycentos2
# 重启正在运行的容器: docker restart 容器名称|容器ID
docker restart mycentos2
# 在linux宿主机下查看 mycentos2 的ip
# docker inspect 容器名称(容器ID)
docker inspect mycentos2
docker rm mycentos2
# 或者
docker rm 2095a22bee70
# 删除所有容器
docker rm `docker ps -a -q`
将linux宿主机中的文件拷贝到容器内可以使用命令:
# docker cp 需要拷贝的文件或目录 容器名称:容器目录
# 创建一个文件abc.txt
touch abc.txt
# 复制 abc.txt 到 mycentos2 的容器的 / 目录下
docker cp abc.txt mycentos2:/
# 进入mycentos2容器
docker exec -it mycentos2 /bin/bash
# 查看容器 / 目录下文件
ll
将文件从容器内拷贝出来到linux宿主机使用命令:
# docker cp 容器名称:容器目录 需要拷贝的文件或目录
# 进入容器后创建文件aaa.txt
touch aaa.txt
# 退出容器
exit
# 在Linux宿主机器执行复制;将容器mycentos2的/aaa.txt文件复制到 宿主机器的/root目录下
docker cp mycentos2:/aaa.txt /root
# 创建linux宿主机器要挂载的目录
mkdir /usr/local/test
# 创建并启动容器mycentos3
# 并挂载 linux中的/usr/local/test目录到容器的/usr/local/test
# 也就是在 linux中的/usr/local/test中操作相当于对容器相应目录操作
docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7
# 在linux下创建文件
touch /usr/local/test/bbb.txt
# 进入容器
docker exec -it mycentos3 /bin/bash
# 在容器中查看目录中是否有对应文件bbb.txt
cd /usr/local/test
ll
注意: 如果你共享的是多级的目录,可能会出现权限不足的提示。 这是因为CentOS7中的安全模块selinux把权限禁掉了,需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题。
1)Docker镜像命令
docker images: 查看本地所有镜像
docker search: 到中央仓库搜素镜像
docker pull : 拉取镜像
docker rmi: 删除本地镜像
2)Docker容器命令
docker ps -a/-l : 查看容器的状态
docker run -it / -di / -v:创建交互式/守护式容器 ,同时挂载文件/目录
docker start/stop/restart :启动/停止/重启容器
docker rm :删除容器
docker inspect:查看容器的内部IP
docker cp:在宿主机和容器之间拷贝文件
# 拉取MySQL 5.7镜像
docker pull centos/mysql-57-centos7
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
- -p 代表端口映射,格式为 宿主机映射端口:容器运行端口
- -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的远程登陆密码(如果是在容器中使用root登录的话,那么其**密码为空**)
# 创建mysql5.7容器
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
# 进入mysql5.7容器
docker exec -it mysql5.7 /bin/bash
# 登录容器里面的mysql
mysql -u root -p
# 查看ip;如果以后要内部连接该mysql,如其他容器中要连接mysql容器的mysql的时候,可以使用如下命令查看IP
docker inspect mysql5.7
使用阿里云需要在阿里云控制台打开3306端口远程访问权限
# 拉取tomcat镜像
docker pull tomcat
# 创建tomcat容器;并挂载了webapps目录
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat
# 查看日志
docker logs -f mytomcat
# 如果出现 WARNING: IPv4 forwarding is disabled. Networking will not work.
# 执行如下操作
# 1、编辑 sysctl.conf
vi /etc/sysctl.conf
# 2、在上述打开的文件中后面添加
net.ipv4.ip_forward=1
# 3、重启network
systemctl restart network
测试访问宿主机的端口号为9000的 tomcat。地址:http://宿主机ip:9000,也可以往/user/local/tomcat/webapps下部署应用,然后再访问。
目标: 掌握在docker中安装nginx容器
操作步骤
拉取镜像
# 拉取nginx镜像
docker pull nginx
创建容器
# 创建nginx容器
docker run -di --name=mynginx -p 80:80 nginx
# 或者
docker run --name=nginx -p 80:80 \
-v /docker/nginx/config/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/config/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/html:/usr/share/nginx/html \
-v /docker/nginx/log/:/var/log/nginx \
-di nginx
# 查看日志
docker logs -f nginx
目标: 掌握在docker中安装redis容器
操作步骤
拉取镜像
# 拉取redis镜像
docker pull redis
创建容器
# 创建redis容器
docker run -di --name=myredis -p 6379:6379 redis
# 查看redis日志
docker logs -f myredis
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0wa1JTdt-1593486637900)(assets/1574224235332.png)]
操作redis容器
# 进入redis容器
docker exec -it myredis /bin/bash
# 进入redis安装目录
cd /usr/local/bin
# 连接redis
./redis-cli
可以使用redis图形界面客户端工具连接redis,端口也是6379。
目标: 掌握在docker中安装rabbitmq容器
操作步骤
拉取镜像
# 拉取rabbitmq镜像
docker pull rabbitmq:management
创建容器
# 创建Rabbitmq容器
# 创建容器,rabbitmq需要有映射以下端口:
# 15672: web管理的端口
# 5672:(客户端连接端口)
docker run -di --name=myrabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
# 查看日志
docker logs -f myrabbit
目标: 掌握docker中容器的备份与迁移
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ctj6PGBl-1593486637905)(assets/1574231546282.png)]
主要作用: 就是让配置好的容器,可以得到复用,后面用到得的时候就不需要重新配置。
其中涉及到的命令有:
操作步骤
容器保存为镜像 (使用docker commit命令可以将容器保存为镜像)。
命令格式: docker commit 容器名称 新的镜像名称
# 将容器保存为镜像
# mynginx:容器名称、mynginx:新的镜像名称
docker commit mynginx mynginx
说明: 此镜像的内容就是当前容器的内容,接下来你可以用此镜像再次运行新的容器.
镜像备份 (使用docker save命令可以将已有镜像保存为tar文件)
命令格式: docker save –o tar文件名 镜像名
# 保存镜像为文件
docker save -o mynginx.tar mynginx
镜像恢复与迁移 (使用docker load命令可以根据tar文件恢复为docker镜像)
命令格式: docker load -i tar文件名
# 停止mynginx容器
docker stop mynginx
# 删除mynginx容器
docker rm mynginx
# 删除mynginx镜像
docker rmi mynginx
# 加载恢复mynginx镜像
docker load -i mynginx.tar
# 在镜像恢复之后,基于该镜像再次创建启动容器
docker run -di --name=mynginx -p 80:80 mynginx
总结
目标: 掌握Dockerfile构建镜像
命令 | 作用 |
---|---|
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像的创建者 |
ENV key value | 设置环境变量 (可以写多条) |
RUN command | 是Dockerfile的核心部分(可以写多条) |
ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir/file dest_dir/file | 和ADD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 设置工作目录 |
# 1、创建目录
mkdir -p /usr/local/dockerjdk8
cd /usr/local/dockerjdk8
# 2、下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录
# 3、在/usr/local/dockerjdk8目录下创建Dockerfile文件,文件内容如下:
vi Dockerfile
FROM centos:7
MAINTAINER ITCAST
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
# 4、执行命令构建镜像;不要忘了后面的那个 .
docker build -t='jdk1.8' .
# 5、查看镜像是否建立完成
docker images
/usr/local/dockerjdk8/Dockerfile 文件中的内容:
说明: 创建文件Dockerfile 这里的D必须大写,不能有任何的偏差。
基于刚刚创建的镜像 jdk1.8 创建并启动容器进行测试
# 创建并启动容器
docker run -it --name=testjdk jdk1.8 /bin/bash
# 在容器中测试jdk是否已经安装
java -version
目标: 掌握docker私服仓库搭建
Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。
著名Docker私服软件:
1)registry(官方出品)
2)harbor(非官方出品)
私有仓库搭建步骤:
# 1、拉取私有仓库镜像
docker pull registry
# 2、启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
# 3、打开浏览器 输入地址http://宿主机ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功
# 4、修改daemon.json
vi /etc/docker/daemon.json
# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将宿主机ip修改为自己宿主 机真实ip
{
"insecure-registries":["宿主机ip:5000"]}
# 5、重启docker 服务
systemctl restart docker
docker start registry
访问: http://192.168.12.132:5000/v2/_catalog
# 1、标记镜像为私有仓库的镜像
# 语法: docker tag jdk1.8 宿主机IP:5000/jdk1.8
docker tag jdk1.8 192.168.12.132:5000/jdk1.8
# 2、再次启动私有仓库容器
docker restart registry
# 3、上传标记的镜像到私有仓库
# 语法: docker push 宿主机IP:5000/jdk1.8
docker push 192.168.12.132:5000/jdk1.8
# 4、输入网址查看仓库效果
若是在私有仓库所在的服务器上去拉取镜像;那么直接执行如下命令:
# 因为私有仓库所在的服务器上已经存在相关镜像;所以先删除;请指定镜像名,不是id
# 语法: docker rmi 服务器ip:5000/jdk1.8
docker rmi 192.168.12.132:5000/jdk1.8
# 拉取镜像
# 语法: docker pull 服务器ip:5000/jdk1.8
docker pull 192.168.12.132:5000/jdk1.8
#可以通过如下命令查看 docker 的信息;了解到私有仓库地址
docker info
1)Docker概念
1.1 Docker是Go语言写的开源的容器引擎。
1.2 Docker 比 VMWare技术更加 小、快、移植方便。
2)Docker命令(重点)
2.1 Docker镜像命令
docker images: 查看本地所有镜像
docker search: 到中央仓库搜素镜像
docker pull : 拉取镜像
docker rmi: 删除本地镜像
2.2 Docker容器命令
docker ps -a/-l : 查看容器的状态
docker run -it / -di / -v:创建交互式/守护式容器 ,同时挂载文件/目录
docker start/stop/restart :启动/停止/重启容器
docker rm :删除容器
docker inspect:查看容器的内部IP
docker cp:在宿主机和容器之间拷贝文件
2.3 使用Docker安装mysql、tomcat、nginx完成spirngboot+vueJS项目部署
3)了解Docker高级用法
3.1 容器的备份与移植
3.2 Dockerfile制作一个Docker镜像
3.3 搭建企业内部的Docker私服