安装依赖
yum install -y yum-utils
设置阿里云镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
使用yum makecache 生成索引缓存索引提供搜索安装速度
yum makecache fast
yum 会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除索引缓存和下载包的缓存。
yum clean all
安装docker
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
查看版本
docker version
运行测试hello-world
docker run hello-world
弹出"Hello from Docker!"则安装成功。
卸载docker
#卸载依赖 yum remove docker-ce-cli containerd.io #删除资源目录(默认资源路径) rm -rf /var/lib/docker
帮助命令
docker version #显示docker的基本信息 docker info #显示docker的系统信息,镜像容器数量 docker xxx --help #帮助命令二、镜像命令
查看所有本地主机上的镜像
[root@xxx ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 7 months ago 13.3kB #注解 REPOSITORY #镜像仓库源 TAG #版本标签信息 IMAGE ID #镜像ID CREATED #创建时间 SIZE #镜像大小 #可选 -a #列出所有镜像 -q #只显示镜像ID
搜索镜像
[root@xxx ~]# docker search mysql #可选(举例) --filter=STARS=2000 #搜索出来的镜像STARS大于2000的 所有可选项可以通过# docker search --help 来获取
拉取镜像
[root@xxx ~]# docker pull mysql[:镜像名]
删除镜像
[root@xxx ~]# docker rmi -f [IMAGE ID]/[REPOSITORY] [IMAGE ID]... #通过镜像ID或者名称来删 [root@xxx ~]# docker rmi -f $(docker images -aq) #递归删除所有镜像三、容器命令 创建一个CentOS容器
docker pull centos新建容器并启动
docker run [可选参数] image #参数 --name="xxx" #容器名字,用来区分容器 -d #后台方式运行 -it #使用交互方式运行,进入容器查看内容 -p #指定容器的端口 使用方式: 1.+主机端口:容器端口(映射) 2.+容器端口 3.+ip:主机端口:容器端口 -P #随机指定端口 #启动并进入容器 docker run -it centos /bin/bash #启动进入CentOS ls #查看目录 exit #退出容器 docker ps #当前在运行的容器 docker ps -a #已经运行过+当前运行的容器 -n=1 #显示最近1个启动过的容器 -q #只显示容器的编号 ctrl+P+Q #容器不停止退出容器删除容器
docker rm 容器id #删除指定容器(无法删除运行的容器) docker rm -f $(docker ps -aq) #递归删除所有容器 docker ps -a -q|xargs docker rm #删除所有容器启动和停止容器
docker start 容器id docker restart 容器id docker stop 容器id docker kill 容器id #强制停止容器四、常用其他命令 后台启动容器
docker run -d centos #坑:docker容器使用后台运行,就必须有一个前台进程,docker发现没有应用,就会自动停止 如:安装了nginx,容器启动后发现自己没有提供服务,就会立刻自杀。查看日志
docker logs [可选参数] 镜像id 例子: docker logs -f -t --tail #容器,没有日志 #编写一段shell脚本(每一秒生成一串日志) docker run -d centos /bin/sh -c "while true;do echo xxx;sleep 1 done" #显示当前运行的镜像 docker ps #显示10条日志 docker logs -tf --tail 10 [镜像id] #参数解释 -t 显示日志 -f 带上时间戳 --tail 显示日志条数查看容器中的进程信息
docker top 容器id #说明 UID 当前用户id PID 父id PPID 进程id #查看镜像元数据 docker ps -a 选一个镜像id docker inspect 镜像id进入当前正在运行的容器
#通常容器都是在后台运行的,需要进入容器修改一些配置 #命令(这里以CentOS为例子) #方式一 docker ps docker exec -it 容器id /bin/bash #方式二 docker attach 容器id #区别 exec 进入容器后开启一个新终端,可以操作 attach 进入容器正在执行的终端,不会启动新终端从容器内拷贝文件到主机上
docker cp 容器id:/home/test.java /home #从容器的home拷贝到主机的home目录五、Docker是如何工作的
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问
Docker-Server接收到Docker-Client的指令,就会执行这个命令!
Docker为什么比虚拟机快?
① Docker有着比虚拟机更少的抽象层
Docker容器提供了基于进程的隔离,而VM虚拟机提供了资源的完全隔离,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。
② Docker利用的是宿主机的内核,VM需要Guest OS
所以说,新建一个容器的时候,Docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导,虚拟机是加载GuestOS,而Docker是利用宿主机的操作系统的。省略了这个复杂的过程。
③ Docker的集成性比VM好。



