前提: 虚拟机1 CentOS7:192.168.0.19(与物理机桥接方式)
虚拟机2 CentOS7:192.168.0.21(与物理机桥接方式)
本机:192.168.0.5
1. Docker安装与启动
1.1 安装Docker
(1)yum包更新到最新
(2)安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper屈都依赖的
sudo yum install -y yum-utils devicemapper-persistent-data lvm2
(3) 设置yum源为阿里云
sudo yum-coonfig-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4) 安装docker
sudo yum install docker-ce
(5) 查看版本
docker -v
1.2 设置ustc的镜像
编辑该文件
vi /etc/docker/daemon.json
该文件中输入如下内容:
{
“registry-mirrors”:["https://docker.mirrors.ustc.edu.cn"]
}
1.3 Docker的启动与停止
systemctl 命令是系统服务管理器指令
启动docker
systemctl start docker
停止docker
systemctl stop docker
重启docker
systemctl restart docker
查看docker状态
systemctl status docker
开机启动
systemctl enable docker
查看docker概要信息
docker info
2. 常用命令
2.1 镜像相关命令
2.1.1 查看镜像
docker images
2.1.2 搜索镜像
docker search 镜像名称
2.1.3 拉取镜像
docker pull 镜像名称
例如 docker pull centos:7
2.1.4 删除镜像
docker rmi 镜像ID
删除所有镜像:docker rmi 'docker images -q'
2.2 容器相关命令
2.2.1 查看容器
查看正在运行容器: docker ps
查看所有容器: docker ps -a
查看最后一次运行容器: docker ps -1
查看停止容器: docker ps -f status=exited
2.2.2 创建与启动容器
创建容器命令:docker run
(1) 交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bas
此时,创建完毕后直接进入。
进入容器后exit退出,容器状态自动变为exited.
(2) 守护式方式创建容器
docker run -di --name=容器名称 镜像名称:标签
此时,创建完毕后未进入容器
登陆守护方式容器:docker exec -it 容器名称(或者ID) /bin/bash
注意:本次创建容器时,即使上面交互式方式创建的容器mycentos已经关闭,此时仍然不能本次容器也为mycentos!!!
2.2.3 停止与启动容器
停止容器:docker stop 容器名称(或者ID)
启动容器:docker start 容器名称(或者ID)
2.2.4 文件拷贝
将文件拷贝到容器内:docker cp 需要拷贝文件或目录 容器名称:容器目录
将文件拷贝出容器外:docker cp 容器名称:容器目录 需要拷贝文件或目录
2.2.5 目录挂载
2.2.6 查看容器IP地址
docker inspect 容器名称(或者ID)
直接查找到IP地址方式:
2.2.7 删除容器
docker rm 容器名称(或者ID)
注意:1. 与删除镜像区别(删除镜像:docker rmi 镜像ID)
2. 在删除镜像时,要把对应全部创建的容器删除才可以删除镜像!
3. 应用部署
3.1 MySQL部署
(1) 拉取mysql镜像
docker pull centos/mysql-57-centos7
(2) 创建容器
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_PASSWORD=123456 mysql
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的密码
(3) 进入mysql容器
docker exec -it tensquare_mysql /bin/bash
(4) 登陆mysql
mysql -u root -p
(5) 远程登陆mysql
连接宿主机IP并指定端口为33306,这样就可以操作容器的3306端口。
3.2 tomcat部署
(1) 拉取镜像
docker pull tomcat:7-jre7
(2) 创建容器
创建容器 -p 表示地址映射
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
(3) 进入mysql容器
docker exec -it mytomcat /bin/bash
(4) 远程访问:192.168.0.19:9000/index.jsp
3.3 Nginx部署
(1) 拉取镜像
docker pull nginx
(2) 创建容器
创建容器 -p 表示地址映射
docker run -di --name=mynginx -p 80:80 nginx
3.4 Redis部署
(1) 拉取镜像
docker pull redis
(2) 创建容器
创建容器 -p 表示地址映射
docker run -di --name=myredis -p 6379:6379 redis
4. 迁移与备份
4.1 容器保存为镜像
docker commit mynginx mynginx_i
4.2 镜像备份
docker save -o mynginx.tar mynginx_i
4.3 镜像恢复与迁移
docker load -i mynginx.tar
-i 输入的文件
docker images 可看到镜像已恢复
5. Dockerfile
5.1 什么是Dockerfile
5.2 常用命令
5.3 使用脚本创建镜像
(1)创建目录
mkdir -p /usr/local/dockerjdk8
(2)下载jdk-8u171-linux-x64.tar.gz并上传到服务器中/usr/local/dockerjdk8目录
(3)在dockerjdk8目录下创建文件Dockerfile vi Dockerfile
#依赖镜像名称和ID
FROM centos7
#指定镜像创建者
MAINTAINER FENCO
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置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
注意:由于创建jdk1.8镜像用到了docker.io/centos镜像,所以必须保证本地有该镜像。
(4) 执行命令构建镜像
在dockerjdk8目录下执行: docker build -t='jdk1.8' . 最后面的点,表示该根目录
(5) 查看镜像是否建立完成
docker images
6. Docker私有仓库
6.1 私有仓库的搭建及配置
(1) 拉取私有仓库镜像
docker pull registry
(2) 启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
(3) 用浏览器访问:http://192.168.0.19:5000/v2/_catalog看到{“repositories”:[]}表示私有仓库搭建成功内容为空。
(4)修改daemon.json
vi /etc/docker/daemon.json
添加以下内容并保存退出。
{"insecure-registries":["192.168.0.19:5000"]} 此步用于让docker信任私有仓库地址
(5) 重启docker服务
systemctl restart docker
6.2 镜像的上传及下载到私有仓库
6.2.1镜像的上传
(1) 标记次镜像为私有仓库的镜像
docker tag jdk1.8 192.168.0.19:5000/jdk1.8
(2) 上传标记镜像
首先,上一步重启了docker服务,所以里面的registry容器也需要启动下。
然后执行上传:docker push 192.168.0.19:5000/jdk1.8
6.2.2 镜像的下载
在另外一台虚拟机中安装docker(192.168.0.21)
(1)修改daemon.json
vi /etc/docker/daemon.json
添加以下内容并保存退出。
{"insecure-registries":["192.168.0.19:5000"]} 此步用于让docker信任私有仓库地址
(2) 重启docker服务
systemctl restart docker
(3) 下载标记镜像
然后执行下载:docker pull 192.168.0.19:5000/jdk1.8