Docker的基本概念
早期的虚拟化技术
- 基础镜像GB级别
- 创建使用稍微复杂
- 隔离性强
- 启动速度慢
- 移植与分享不方便
容器化技术
- 基础镜像MB级别
- 创建简单
- 隔离性强
- 启动速度秒级
- 移植与分享方便
资源隔离
- cpu、memory资源隔离与限制
- 访问设备隔离与限制
- 网络隔离与限制
- 用户、用户组隔离限制
Docker的基本架构
Docker_Host:安装Docker的主机
Docker Daemon:运行在Docker主机上的Docker后台进程
Client:操作Docker主机的客户端(命令行、UI等)
Registry:镜像仓库Docker Hub
Images:镜像,带环境打包好的程序,可以直接启动运行
Containers:容器,由镜像启动起来正在运行中的程序
总结:装好Docker,然后去软件市场寻找镜像,下载并运行,查看容器状态日志等排错
Docker的基本操作
容器安装
docker pull nginx #下载最新版本的nginx
docker pull redis:6.2.4 #下载指定版本的redis
#下载下来的镜像都保存在本地
docker images #查看所有镜像
docker rmi redis #删除指定镜像,默认为latest
docker rmi 镜像名:版本号/镜像id
容器使用
容器启动以及查看
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
docker run 设置项 镜像名 镜像启动运行的命令(镜像里面默认有的,一般不用写)
设置项
-d #后台运行
—name=名字 #为镜像设置新的名字
—restart=always #下次开机自启动
-p 88:80 #端口映射(主机88端口映射到容器80端口)
docker ps #查看正在运行的容器
docker ps -a #查看所有容器
docker stop 容器名/容器id #停止正在运行的容器
docker rm 容器id/名字 #删除容器
docker rm -f 容器id/名 #强制删除正在运行中的容器
docker start 容器id/名字 #重新启动容器
docker update 容器id/名字 --restart=always #更新容器设置项
docker run --name=mynginx -d --restart=always -p 88:80 nginx
修改容器内容
docker exec - it 容器id/容器名 /bin/bash #进入容器内部的系统,修改容器内容
将自己修改好的镜像提交
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -a “xxx” -m “首页变化” bbc310b2c15b xxxnginx:v1.0
共享容器的方法
将xxxnginx:v1.0推送给其他机器
方法一:该方法可以离线安装
- 首先镜像物理压缩成一个包
docker save -o newnginx.tar xxxnginx:v1.0
- 然后进行分享给其他机器,IP为xxx.xxx.xxx
scp newnginx.tar root@xxx.xxx.xxx
- 对方机器进行加载
docker load [OPTIONS]
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output
方式二:推送镜像到docker hub
- docker tag local-image:tagname new-repo:tagname
- docker push new-repo:tagname
示例如下:
#把旧镜像名字改成仓库要求的新的名字
1、docker tag xxxngnginx:v1.0 用户名/repositories
2、docker login #登陆docker hub
user:
password:
3、docker push 用户名/repositories
4、docker logout
#别的机器只需要docker pull的方式进行下载