# 1、yum 包更新到最新 yes
yum update -y
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
docker info
- Registry Mirrors
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://afi5x6i2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
需要注意最后两行命令,单独执行一遍,如何查看是否配置成功:docker info
1.启动命令
systemctl start docker
2.停止命令
systemctl stop docker
3.重启命令
systemctl restart docker
4.查看状态
systemctl status docker
5.加入开机自启
systemctl enable docker
1.查看本地镜像
docker images
docker images -q(查看镜像id)
2.查找镜像
docker search xxx(redis)
3.下载镜像
docker pull xxx(redis:5.0) #注意如果不跟版本号,默认下载latest(最新版)。
4.删除镜像
docker rmi xxx(redis:5.0) #注意如果不跟版本号,默认删除latest(最新版)
5.删除所有镜像
docker rmi 'docker images -q' # 删除所有本地镜像
1.创建容器
交互式容器:(创建后直接进入容器内部,一旦退出容器,容器服务自动停止)
docker run -it --name=c1 centos:7 /bin/bash
ll 列表
cd / 根目录
cd root/ root(用户)目录
克隆会话 打开新窗口
守护式容器:(创建后不会直接进入容器内部,需要使用命令进入容器内部,退出容器,容器服务不会停止)
docker run -id --name=c2 centos:7
2.删除容器
docker rm 容器名称/容器id(c2) #这里只可以删除已经停止的容器,删除正在运行着的容器会报错
3.查看容器
docker ps #查看正在运行着的容器
docker ps -a #查看所有创建的容器
4.进入容器内部
docker exec -it 容器名称(c2) /bin/bash
/bin/bash 可以替换为 bash
5.停止容器
docker stop 容器名称/容器id
6.启动容器
docker start 容器名称 (c2) #如果容器原来是交互式容器,那么调用start方法后会自动升级为守护式容器
7.退出容器
exit
8.强制删除
docker rm -f 容器名称 #不建议使用
9.容器开机自启(扩展)
docker run -id --name=c2 --restart=always centos:7
pwd 查看当前目录
rz 上传窗口(或点击上面最右侧图标)
docker run -id --name=c1 -v /root/data:/root/c1data centos:7
c1无需先创建,自动新建c1、data目录、c1data目录,c1的c1data下创建的自动保存在Linux数据卷中
cd c1data/
touch t1.txt
vim t2.txt #vim在docker的centos不存在
vi t2.txt
n 输入
esc
:wq 退出
cat t2.txt 查看
-v : 代表挂载数据卷,路径 : 前面代表虚拟机中的路径,必须写绝对路径;: 后面代表容器中的路径,必须写绝对路径。
#部署命令
docker run -id --name=c_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
#-e MYSQL_ROOT_PASSWORD 设置root密码
#-p 端口映射
docker exec -it c_mysql bash
mysql -uroot -proot
#mysql相关命令
show databases; #查看数据库
use xxx; #切换数据库
show tables; #查看数据库中的表
#部署命令
docker run -id --name=c_tomcat -p 8080:8080 -v /root/tomcat:/usr/local/tomcat/webapps tomcat
#需要在root/tomcat下面创建目录并且创建html才可以看到效果
vim index.html
:wq
mkdir test #创建test目录,webapp下要有目录才能写入
mv index.html test/ #表示要将当前位置的index.html移到test目录中,右边的/有没有都可以,但是cd /root 左边的/一定要有
#部署命令
docker run -id --name=c_nginx -p 80:80 -v /root/nginx:/usr/share/nginx/html nginx
#部署命令
docker run -id --name=c_redis -p 6379:6379 redis
set a b
get a
docker stop c_redis c_mysql c_nginx c_tomcat c1 c2
#1.查找带管控台页面插件的rabbitmq镜像
docker search rabbitmq:management
#2.获取镜像
docker pull rabbitmq:management
#3.安装镜像 -d 后台运行容器,并返回容器ID
#-p 指定端口映射,格式为:主机(宿主)端口:容器端口
#--name 给运行的程序起个名称
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
#查看
docker ps
#开启
docker start rabbitmq
#关闭
docker stop rabbitmq
要求:
FROM centos:7
MAINTAINER regino
RUN yum install -y vim
WORKDIR /usr
CMD /bin/bash
#镜像名称和版本号自己定义,注意命令最后是一个英文的点
docker build -f dockerfile名称 -t 镜像名称:版本号 .
FROM java:8
MAINTAINER regino
ADD spring-boot-docker-demo.jar app.jar
CMD java -jar app.jar
#镜像名称和版本号自己定义,注意命令最后是一个英文的点
docker build -f dockerfile名称 -t 镜像名称:版本号 .
1.docker:
docker的出现是为了解决软件跨环境迁移问题,沙箱机制(容器),相互隔离。
2.docker架构:
客户端:接收用户命令,传输至守护进程
守护进程:
镜像:可以理解为是安装包,其实是一系列可执行程序
容器:给镜像提供运行环境
仓库:用于存放镜像
本地仓库: 公司自己搭建的仓库
远程仓库:官方仓库 https://hub.docker.com/
3.镜像加速器:
腾讯云、网易云、中科大、阿里云(需要注册阿里云账号登录后分配)
4.docker命令
a.守护进程命令:
启动:systemctl start docker
停止: systemctl stop docker
重启: systemctl restart docker
开机自启: systemctl enable docker
状态: systemctl status docker
b.镜像命令:
搜索:docker search 镜像名称:版本号(如果不添加版本,默认是最新版)
下载:docker pull 镜像名称:版本号(如果不添加版本,默认是最新版)
删除:docker rmi 镜像名称:版本号(如果不添加版本,默认是最新版)
查看本地镜像:docker images
查看本地镜像的id: docker images -q
c.容器操作命令:
交互式容器:
特点:容器创建后直接进入容器内部,一旦退出容器,容器自动停止运行
命令: docker run -it --name=xxx 镜像名称:版本号 /bin/bash
守护式容器:
特点:容器创建后不会直接进入容器内部,需要使用命令进入,退出容器,容器不会停止运行
命令:docker run -id --name=xxx 镜像名称:版本号
启动容器:docker start 容器名称/id
停止容器:docker stop 容器名称/id
删除容器:docker rm 容器名称/id
强制删除:docker rm -f 容器名称/id
进入容器:docker exec -it 容器名称/id /bin/bash 或者 bash
查看容器详细信息: docker inspect 容器名称/id
退出容器:exit
查看容器:
正在运行的容器: docker ps
查看所有容器: docker ps -a
5.部署四大应用:
mysql:
docker run -id --name=c_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
nginx:
docker run -id --name=c_nginx -p 80:80 -v /root/nginx:/usr/share/nginx/html nginx
tomcat:
docker run -id --name=c_tomcat -p 8080:8080 -v /root/tomcat:/usr/local/tomcat/webapps tomcat
redis:
docker run -id --name=c_redis -p 6379:6379 redis
#注意在做tomcat以及nginx数据卷挂载时一定要写对容器内部的路径
6.数据卷:
可以是一个目录或者是文件,并且可以挂载多个
作用:
1.容器数据的持久化
2.容器间完成数据共享
3.使得容器可以与外部机器进行数据交换
7.容器与虚拟机的区别
a.容器开销极低,在一个虚拟机中可以创建成千上百个容器(相对而言)
b.容器时MB级别,虚拟机是GB级别
c.容器其实也是一种虚拟化技术,只不过容器虚拟化的是基于虚拟机虚拟化;虚拟机的虚拟化是基于硬件资源
原文链接:https://qwert.blog.csdn.net/article/details/107326700