版本 | 描述 |
---|---|
Docker-ce | 社区版,免费 |
Docker-ee | 企业版,收费 |
Docker-ce学习 操作环境:Centos 7.x
一、Docker安装
1. 安装命令
#yum更新到最新
sudo yum update
#安装yum-util提供的yum-config-mapper依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置docker的yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker-ce
sudo yum install docker-ce
#查看docker -v 版本
docker -v
#设置docker开机自动启动
systemctl enable docker
#更改镜像,提升下载速度
vim daemon.json
#加入
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
#重启服务
systemctl restart docker
二、docker 命令
操作 | 命令 |
---|---|
查看状态 | systemctl status docker |
启动 | systemctl state docker |
停止 | systemctl stop docker |
重启 | systemctl restart docker |
1. 镜像相关命令
操作 | 命令 | 描述 |
---|---|---|
查看镜像 | docker images | |
搜索镜像 | docker search 镜像名称 | NAME :镜像名称 DESCRIPTION :镜像描述STARS :好评度OFFICIAL :是否是官方提供的AUTOMATED :是否自动构建 |
拉取镜像 | docker pull 镜像名称 | 例:docker pull mysql:5.7 冒号后面可以加上标签号例: docker pull mysql 不加默认拉取最新的版本 |
删除镜像 | docker rmi 镜像id | 删除所有镜像 docker rmi `docker images -q``(去掉最后一个符号) 删除镜像时有运行的容器的话需要先删除容器再删除镜像 |
2. 容器相关命令
操作 | 命令 | 描述 |
---|---|---|
查看容器 | docker ps | 查看容器 ps 查看所有容器 ps -a |
操作容器 | docker 命令 容器名 | 启动 start 停止 stop 重启 restart |
创建容器命令 | docker run | 一个- 代表不用填参数,两个- 表示必须要参数 -i 运行容器-t 启动后进入容器客户端 --name 为容器命名 --name=sql5.7 -v 映射目录 $1宿主机目录:容器目录 -d 后台运行 -p 端口映射 $1宿主机端口 $2容器端口 |
进入容器 | docker exec | 例:docker exec -it mycentos /bin/bash exit 退出容器 |
退出容器 | exit | 例:#docker exec -it mycentos /bin/bash #exit 退出容器 |
文件拷贝 | docker cp | 拷入例:doker cp /opt/xxx.txt mycentos:/usr/local $1宿主机文件 $2镜像名:目录 拷出例: doker cp mycentos:/usr/local /opt/xxx.txt 与拷入反着写即可 $1镜像名:目录 $2宿主机目录 |
查看容器参数 | docker inspect 容器名 | 直接使用命令返回的JSON格式数据 格式化提取需要参数: docker inspect mycentos2 --format='{{.NetworkSettings.IPAddress}}' |
删除容器 | docker rm 容器名 | 必须先停掉才能移除 |
3. 命令实操
3.1 交互式方式创建容器
创建后直接进入容器中, 使用exit命令退出后容器停止
#1.创建一个 centos7的容器 并直接进入到容器中
docker run -it --name=mycentos7 centos:7 /bin/bash
#2.退出这个容器
exit
3.2 守护式方式创建容器
创建后为后台方式运行,使用docker exec 进入到容器,exit退出容器后容器不会退出运行
创建容器:docker run -di --name=mycentos2 centos:7
进入这个容器:docker exec -it mycentos2 /bin/bash
三、docker应用部署
1. mysql部署
#1.拉取镜像
docker pull centos/mysql-57-centos7
#2.创建容器
docker run -d -i --name=demoMysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xiaoli centos/mysql-57-centos7
#3.查看状态
docker ps
Docker Mysql:8版本部署
docker pull mysql
docker run --name dockermysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
##进入容器
docker exec -it dockermysql bash
##登录
mysql -u root -p
##配置远程登录
use mysql;
grant all privileges on *.* to 'root'@'%';
select Host,User,plugin from user;
##修改Root登录验证
alter user 'root'@'%' identified with mysql_native_password by '123456';
2. tomcat部署
#1.拉取镜像
docker pull tomcat:7
#2.创建容器
docker run -di --name=demoTomcat -p 8080:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7
#3.访问测试
http://192.168.200.200:9000/
#4.由于使用了 -v目录挂载 所以访问时出现404,这时需要在宿主机/usr/local/webapps/中添加应用
3. Nginx部署
#1.拉取镜像
docker pull nginx
#2.创建容器
docker run -di --name=demoNginx -p 80:80 nginx
容器部署成功了,如何将我们的页面部署到Nginx呢?
#3.进入容器中设置Nginx
docker exec -it demoNginx /bin/bash
#4 容器中:
dir #查看当前目录
cd etc/nginx/ #进入Nginx目录
cat nginx.conf #查看Nginx的配置文件 可以看到 include /etc/nginx/conf.d/*.conf;
cat /etc/nginx/conf.d/default.conf #查看conf.d下的配置文件 可以看到 root /usr/share/nginx/html; 这条配置.
exit
#4 退出容器,将我们的静态页面cp到 /usr/share/nginx/html/目录即可
#在宿主机创建一个目录,并将静态页面放入次目录下
mkdir -p /usr/share/nginx/html/
#将目录CP到容器中
docker cp html demoNginx:/usr/share/nginx/
四、迁移与备份
1. 容器保存为镜像
docker commit demoNginx nginx_20190414
运行这个新保存的镜像:
docker run -di --name=demoNginx2 -p 81:80 nginx_20190414
2. 镜像备份
docker save -o nginx_20190414.tar nginx_20190414
3.镜像恢复与迁移
1.恢复之前先删除镜像跟容器
docker stop demoNginx2
docker rm demoNginx2
docker rmi nginx_20190414
2.恢复:
docker load -i nginx_20190414.tar
五、Dockerfile
介绍:由一系列的命令和参数构成的脚本,基于基础镜像创建一个新的镜像.
1. 常用命令
命令 | 作用 |
---|---|
FROM 基础镜像:标签 | 定义基础镜像的名称和标签 |
MAINTAINER 名称 | 版权申明,申明镜像的创建者, 可以不写 |
ENV key value | 设置环境变量 (可以写多条) |
RUN 命令 | 在运行时执行某一个命令,比如创建一个目录 (可以写多条) |
ADD 源目录/文件 目标目录/文件 | 将宿主机的文件复制到容器内,如果是压缩文件自动解压 |
COPY 源目录/文件 目标目录/文件 | 将宿主机的文件复制到容器内 |
WORKDIR 目录 | 设置容器工作目录,在登陆容器后默认进入此目录 |
2. 使用dockerfile构建一个镜像
使用基础镜像为 centos7 以构建JDK1.8为例
#1.宿主机创建目录并放入JDK1.8
mkdir -p /usr/local/docker-jdk8
cd /usr/local/docker-jdk8
# 2. 构建一个Dockerfile文件 必须叫这个名字
mkdir Dockerfile
# 3. 构建 -t=构建后名称 .代表当前目录
docker build -t='jdk1.8' .
# 4.查看镜像 会发现多了一个 jdk1.8的镜像
docker images
六、创建Docker私有仓库
用于存放企业内部应用级的镜像
1. 创建私有仓库服务
#1.拉取镜像
docker pull registry
# 2.启动私有仓库
docker run -di --name=registry -p 5000:5000 registry
# 3. 查看是否搭建成功
访问 http://192.168.200.200:5000/v2/_catalog 有返回证明成功
# 4.修改daemon.json配置文件 添加信任仓库地址
vim /etc/docker/daemon.json
"insecure-registries":["http://192.168.200.200:5000"]
#重启docker服务
systemctl restart docker
2. 上传镜像到私有仓库
1.给需要上传的镜像打一个标签 标签名为 私服IP:端口:镜像名
docker tag jdk1.8 192.168.200.200:5000/jdk1.8
2.上传到私有服务器
docker push 192.168.200.200:5000/jdk1.8
3.访问仓库是否已经存在列表中 http://地址:端口/v2/_catalog
4.从私库下载 docker pull 192.168.200.200:5000/jdk1.8