Docker笔记

Docker笔记

Docker概念

Docker 的思想来自于集装箱,集装箱在一艘大船上,可以把货物规整的摆放起来,并且各种各样的货物被集装箱标准化了。集装箱和集装箱之间不会互相影响,比如就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装完好,就可以用一艘大船一起都运走。

Docker的作用

软件自带环境安装,实现跨平台,跨操作系统地正常运行应用程序。避免版本不兼容,环境配置麻烦等问题。便于开发和运维人员更好地协同合作。比如一个应用程序需要 JDK、Tomcat、MySQL 环境,使用 Docker 就可以把应用程序和环境一起打包成一个镜像上传,其他人只需要下载这个镜像后启动镜像即可运行此应用程序。
Docker 提供了软件编码开发 / 测试结束后,程序和字节码文件执行,开发和运维人员的部署配合的一个标准化的解决方案。

Docker 的组成

镜像( image ):
Docker 镜像就像是一个模板,可以通过这个模板来创建容器服务,通过一个镜像可以创建多个容器。
容器( container ):
Docker 容器就是 Docker 镜像启动或独立运行一个或者一组应用。可以理解为一个简易的 Linux 系统。每个容器间互相隔离,且每个容器内都有一个属于自己的文件系统,互不影响。
仓库( repostitory):
Docker 仓库就是存放镜像的地方,分为公有仓库和私有仓库。一般 Docker 仓库默认是国外的 Docker Hub,阿里云也有 Docker 仓库,容器镜像服务和镜像加速器。

Docker与VM的区别

传统虚拟机需要先虚拟出一套硬件,再运行一个完整的操作系统,再在这个系统上安装和运行软件。资源占用多、冗余步骤多、启动慢。
Docker 容器依赖主机的内核,容器内的应用直接运行在主机的内核,除去了虚拟硬件,引导加载的环节,非常轻便。

Docker安装部署

# 卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 安装需要的安装包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置阿里云镜像仓库
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum install docker-ce docker-ce-cli containerd.io
# 配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://vmdgahdo.mirror.aliyuncs.com"]
}
EOF
#配置docker
cat <<EOF | sudo tee /etc/docker/daemon.json
	{
	"exec-opts": ["native.cgroupdriver=systemd"],
	"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
	"log-driver": "json-file",
	"default-address-pools":[{"base": "192.168.0.0/16", "size": 24}],
	"log-opts": {
		"max-size": "100m"
	},
	"storage-driver": "overlay2"
	}
	EOF

sudo systemctl daemon-reload
sudo systemctl restart docker
# 测试docker是否安装成功
docker version
# 启动docker
systemctl start docker
# hello-world
docker run hello-world
docker run -it centos (交互式启动容器)
dockr run -d nginx (后台启动容器)
# 查看下载的镜像
docker images

# 重启docker
systemctl restart docker
# 查看docker状态
systemctl status docker
# 设置docker为开机自启动
systemctl enable docker

# 停止docker
systemctl stop docker
# 卸载docker
yum remove docker-ce docker-ce-cli containerd.io
# 删除docker资源
rm -rf /var/lib/docker

Docker工作流程

运行命令后 Docker 会先在本地寻找该镜像,如果本地有此镜像就运行此镜像,如果本地没有该镜像就会去 DockerHub 上寻找。如果 DockerHub 上有该镜像则下载该镜像到本地后运行此镜像,如果 DockerHub 上没有该镜像就返回找不到该镜像的错误。

Docker工作原理

Docker 是一个 Client - Server 结构的系统。Docker 的守护进程运行在本机上,客户端可以通过 Socket 访问。Docker Server 接收到 Docker Client 的指令执行命令。

Docker镜像常用指令

# 查看docker概要信息
docker info

# 查看docker帮助文档
docker --help

#列出镜像
docker images 

# 列出指定镜像
docker images hello-world
# 列出所有镜像
docker images
docker images -a
# 列出指定镜像id
docker images hello-world -q
# 列出所有镜像id
docker images -q
docker images -aq


# 搜索指定镜像
docker search mysql
# 搜索收藏大于3000的指定镜像
docker search mysql --filter=STARS=3000


# 下载指定镜像
docker pull mysql
# 下载指定版本的镜像
docker pull mysql:5.7

# 删除指定镜像
docker rmi -f 镜像id
# 删除多个镜像
docker rmi -f 镜像id 镜像id 镜像id
# 删除全部镜像
docker rmi -f $(docker images -aq)

Docker容器命名

# 下载centos镜像,有了镜像才能创建容器
docker pull centos
# 以交互方式启动容器
docker run -it centos /bin/bash
# 查看容器内容
ls
# 退出容器
exit
ctl+shift+p+q :退出容器且不关闭容器
# 后台启动容器
docker run -d centos

# 列出当前运行的容器
docker ps
# 列出当前运行和历史运行的容器
docker ps -a


# 启动指定容器
docker start 容器id
# 重启指定容器
docker restart 容器id
# 停止当前运行的指定容器
docker stop 容器id
# 强制停止指定容器
docker kill 容器id


# 删除指定的容器,不能删除当前运行的容器
docker rm 容器id
# 强制删除当前运行或历史运行的容器
docker rm -f 容器id
# 删除所有的容器
docker rm -f $(docker ps -aq)
docker ps -a -q|xargs docker rm

# 查看指定容器的日志,-tf显示日志,--tail显示条数
docker logs -tf --tail 10 容器id
# shell脚本
docker run -d centos /bin/sh -c "while true;do echo docker;sleep 1;done"


# 查看指定容器的进程
docker top 容器id

# 查看指定容器的元数据
docker inspect 容器id

# 进入正在运行的容器方式一:开启新终端
docker exec -it 容器id /bin/bash
# 进入正在运行的容器方式二:进入该终端
docker attach 容器id

# 手动拷贝容器中的文件
docker cp 容器ID:容器路径 主机路径

通过查看容器发现,创建的两个容器并未运行。以交互方式启动的容器未运行是因为执行 exit 命令退出容器时顺带把容器停止运行了。后台启动的容器未运行是因为容器后台运行必须有一个前台进程,docker 如果未发现应用就会自动停止后台运行。使用快捷键 Ctrl + Shift+P + Q 可以实现退出容器且不停止容器。

Docker实操

Docker容器化部署Nginx

# 下载nginx镜像
docker pull nginx
# 启动nginx容器
docker run -d --name nginx01 -p 3344:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值