一.安装Docker
1.搭建一个Centos7.x的虚拟机
2.yum包更新到最新
sudo yum update
3.安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4.设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/doc
ker-ce/linux/centos/docker-ce.repo
5.安装docker
sudo yum install docker-ce
6.查看安装版本
docker -v
二. docker配置站点/启动与暂停
2.1 设置一个国内站点ustc镜像
1.编辑该文件
vi /etc/docker/daemon.json
输入以下内容:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
2.2 启动/查看状态/停止/重启/概要/帮助docker命令
启动
systemctl start docker
查看状态
systemctl status docker
关闭
systemctl stop docker
重启
systemctl restart docker
开机自启
systemctl enable docker
查看docker概要信息
docker info
查看docker帮助文档
docker --help
三.常用命令
3.1 镜像相关命令
查看镜像
docker images
搜索镜像
docker search 镜像名称
拉取镜像
docker pull 镜像名称
删除镜像
docker rmi 镜像ID
删除所有镜像
注:`不是‘,是ESC下面的哪个点
docker rmi `docker images -q`
3.2 查看容器相关命令
查看运行中的容器
docker ps
查看所有容器
docker ps -a
3.3 创建与启动容器
创建容器
docker run
参数:
-i : 表示运行容器
-t: 表示容器启动后进入其命令行,与-i连用,创建后就能登陆进去,即分配一个伪终端
–name :为创建的容器命名
-v :表示目录的映射关系,前者是宿主机目录,后者是映射到宿主机上的目录
-d : 创建一个守护式容器在后台运行
-p: 表示端口映射,前者是宿主机端口,后者是容器内映射端口
交互式创建容器
交互式方式运行容器,用exit退出时,容器也就停止了
docker run -it --name=mycentos tutum/centos /bin/bash
守护式方式创建容器
守护式创建的容易,用exit推出去,容器还会继续运行
docker run -dt --name=mycentos7 tutum/centos
进入已经创建好的容器
docker exec -it mycentos7 /bin/bash
停止正在启动的容器
docker stop 容器名称
启动已经停止的容器
docker start 容器名称
3.4 容器文件拷贝cp
将文件拷贝到容器
docker cp 需要拷贝的文件或目录 容器名称:容器目录
将容器的文件拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
3.5 目录挂载
创建容器时,将宿主机的目录与容器内的目录进行映射,修改宿主机的内容从而影响容器。
docker run -di --name=mycentos3 -v /tmp/:/tmp tutum/centos
3.5 查看容器IP地址
查看全部信息
docker inspect mycentos3
单独提取要查看的内容
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos3
3.6 删除容器
必须在关闭状态下
docker rm 容器名称
四.应用部署
4.1 mysql部署
1.拉取镜像
docker pull centos/mysql-57-centos7
2.创建容器
-p :映射端口,可以通过宿主机的端口访问容器
-e:设置Mysql密码
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
3.链接数据库
使用sqlyog:
新建一个新的连接,输入宿主机的IP,端口号设为容器映射的端口号,点击测试连接,提示成功即可
4.2 tomcat部署
1.拉取镜像
7:代表tomacat本身版本
jre7:代表jre的版本
docker pull tomcat:7-jre7
2.创建容器
-v:挂载
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
3.访问
将war包放入webapps下,科直接访问
在网页中输入宿主机ip加上映射的端口号加访问的包
192.168.11.3:9000/cas
4.3 Nginx 部署
1.拉取镜像
docker pull nginx
2.创建nginx容器
docker run -di --name=mynginx -p 80:80 nginx
4.4 redis部署
1.拉取镜像
docker pull redis
2.创建容器
docker run -di --name=myredis -p 6379:6379 redis
3.连接
利用本地的redis客户端输入宿主机连接地址
redis-cli -h 192.168.11.3
五. 迁移与备份
5.1 容器保存为镜像
docker commit 容器名 镜像名
docker commit mynginx mynginx_01
5.2 备份镜像
docker save -o 备份文件名 镜像名
docker save -o mynginx.tar mynginx
5.3 备份恢复为镜像
docker load -i 备份文件名
docker load -i mynginx.tar
六.DockerFile
概念:是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像
6.1 常用命令
命令 | 作用 |
---|---|
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 | 设置工作目录 |
6.2 例:Dockerfile构建jdk1.8镜像
1.将JDK1.8的压缩包上传至linux目录内
/usr/local/dockerjdk8
2.在该目录内编辑文件,文件名称固定不能更改
vi Dockerfile
FROM centos:7 //基础镜像,不存在会自动下载
MAINTAINER xkm //指定镜像的创建者
WORKDIR /usr //指定工作目录
RUN mkdir /usr/local/java //创建一个目录
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java //添加包,并会自动解压到该目录
//以下是配置环境变量
ENV JAVA_HOME /usr/local/java/jdk.1.8.0_171 //解压后是该名字
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
3.输入构建命令
-t : 名字
. :在当前目录构建
docker build -t='jdk1.8' .
**4.**查看
输入以下命令会发现jdk.18镜像已经出现:
docker images
七. Docker私有仓库
7.1 搭建私有仓库
1.拉取私有仓库镜像
docker pull registry
2.启用私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
3.登陆以下网页检测是否创建成功
http://192.168.11.3:5000/v2/_catalog
4.配置daemon.json
在以下文件内加入该命令,表示新人该私有仓库地址
vi /etc/docker/daemon.json
"insecure-registries":{["192.168.11.3:5000"]}
5.重启服务,使其生效
注:重启docker后容器也需要手动start,否则默认关闭
systemctl restart docker
7.2 镜像上传到私有仓库
1.给要上传的镜像打一个标签
给jdk1.8打192.168.11.3:5000/jdk1.8的标签,表示该镜像为私有仓库的镜像
docker tag jdk1.8 192.168.11.3:5000/jdk1.8
打完标签后输入docker images会出现该镜像
2.上传镜像到私有仓库
docker push 192.168.11.3:5000/jdk1.8