- Docker概述
- 传统虚拟机先虚拟出一套硬件,运行完整的操作系统,再在系统上运行软件
- 容器内的应用直接运行在宿主机的内容,容器本身无内核,也没有硬件,且容器间互相隔离,文件系统都是不一样的
- 应用更快速的交付和部署
- 传统交付需要借助文档、安装程序
- docker打包镜像后发布测试,一键运行
- 部署应用快捷、项目打包为镜像后扩展方便
- 开发、测试等环境高度一致
- 内核级别的虚拟化,在一台物理机上可运行多个容器实例,服务器性能充分利用
- 镜像:相当于一个模板,通过镜像来创建容器。一个镜像可以创建多个容器
- 容器:通过容器可以独立运行一个或一个组应用,有启动、停止、删除等基本操作
- 仓库:存放镜像的地方,有共有仓库和私有仓库
#修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://1fd77tzz.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
Docker命令 docker工作原理 docker是一个Client-Server结构的系统,docker的守护进程运行在主机上,通过socket从客户端访问。DockerServer接收到DockerClient的指令,就会执行这个命令。docker中容器之间相互隔离,外部不能直接访问容器。 docker比vm快的原因 vm对比dc架构: docker比vm少了一层Guest OS。直接利用宿主机的内核。因此在新建容器时,无需想vm一样加载一个操作系统内核,省略了这个复杂的过程,加载时间是秒级的
- 帮助命令
- docker version 版本信息
- docker info 系统和容器相关信息
- docker --help 帮助 ,官网文档地址:https://docs.docker.com/engine/reference/commandline/
- 镜像命令
- docker images 查看所有本地的主机上的镜像
- docker search 搜索镜像
- docker pull 下载镜像
格式:docker pull 镜像名[:tag](版本) Using default tag: latest #如果不写tag则是默认mlatest latest: Pulling from library/mysql a10c77af2613: Pull complete #分层下载,docker images的核心:联合文件系统 b76a7eb51ffd: Pull complete #当下载其他镜像时,若有相同层的镜像,则不会重新下载,直接共用 258223f927e4: Pull complete 2d2c75386df9: Pull complete 63e92e4046c9: Pull complete f5845c731544: Pull complete bd0401123a9b: Pull complete 3ef07ec35f1a: Pull complete c93a31315089: Pull complete 3349ed800d44: Pull complete 6d01857ca4c1: Pull complete 4cc13890eda8: Pull complete Digest: sha256:aeecae58035f3868bf4f00e5fc623630d8b438db9d05f4d8c6538deb14d4c31b #签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest #真实地址,docker pull mysql 等价于docker pull docker.io/library/mysql:latest
- docker rmi 删除镜像 rm代表删除,i代表image
-f, --force Force removal of the image #强制删除镜像例如: 删除指定镜像:docker rmi -f ID/image名, 删除全部镜像:docker rmi -f $(docker images -aq)
- 容器命令(有镜像才可以创建容器)
- run:启动容器。先在本机寻找镜像,找不到则去dockerHub上下载,还找不到就报错,找到了就下载到本地,并使用
docker run [可选参数] image --name="Name" 容器名字,用于区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 使用容器的端口,-p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 容器端口 -P(大写) 随机指定端口
# 启动并进入镜像,交互工具使用bash
[root@VM-0-7-centos ~]# docker run -it centos /bin/bash [root@2b902d8d2492 /]# ls #镜像内部是一个并不太完整的centos系统,很多命令是没有的 bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# exit 退出主机
exit 直接停止容器并退出 Ctrl + P + Q 容器不停止 [root@2b902d8d2492 /]# exit exit [root@VM-0-7-centos ~]# ls / bin boot data dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@VM-0-7-centos ~]#
docker ps命令: -a 列出当前正在运行的容器和历史运行过的容器 -n=? 列出最近创建的容器 ?为个数 -q 只显示容器编号
[root@VM-0-7-centos ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@VM-0-7-centos ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2b902d8d2492 centos "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago vibrant_torvalds 184d14eb101f feb5d9fea6a5 "/hello" 8 days ago Exited (0) 8 days ago stoic_fermi [root@VM-0-7-centos ~]#
docker rm 删除容器
docker rm 容器名 删除指定容器,不能删除正在运行的 docker rm -f 强制删除容器 docker rm -f $( docker ps -aq ) 强制删除所有容器,等同于docker ps -a -q | xargs rm 使用管道删除
容器的启动、重启、停止和强制停止
容器基本操作命令
docker start id docker restart id docker stop id docker kill id
- Docker镜像
- 容器数据卷
- DockerFile
- Docker网络原理
- IDEA整合Docker