Docker入门——初识Docker
2021/12/25 23:08:05
本文主要是介绍Docker入门——初识Docker,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Doaker学习笔记
- Docker的认知
- 安装Docker
- 卸载Docker
- 阿里云镜像加速
- Docker的常用命令
- 帮助命令
- 镜像命令
- 容器命令
- 其他容器命令
- 练习
- 安装Nginx
- 安装tomcat
- 部署es
- 配置可视化(pointainer)
Docker的认知
-
核心概念
docker是一种linux容器技术。容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求。可简单理解为一种沙盒 。每个容器内运行一个应用,不同的容器之间相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,资源需求远远低于虚拟机。
Docker通过隔离机制,可以将服务器利用到极致。 -
基于GO语言开发的。
-
官网地址:https://www.docker.com/
文档地址:https://docs.docker.com/
仓库地址:https://hub.docker.com/ -
区别
-
传统的虚拟机,虚拟出一个硬件,运行一个完整的操作系统
-
容器内的应用直接运行在宿主机上,容器没有自己的内核,也没有虚拟硬件
每个容器是相互隔离的,每个容器都有属于自己的文件系统,互补影响
5.docker与虚拟化 -
虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器,网络,内存等抽象、转化后呈现出来,使用户以更好的方式来应用这些资源。虚拟化目标往往是为了在同一个主机上运行多个系统或者应用,从而提高资源的利用率,降低成本,方便管理及容错容灾。
-
操作系统级的虚拟化:内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。docker以及其他容器技术就属于此范畴。
-
传统虚拟化方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。而docker容器是在操作系统层面上实现虚拟化,直接复用本地主机操作系统,更加轻量。
- 作用
1、应用可以更加快捷的交付和部署
2、使用的分层存储以及镜像的技术,更便捷的升级和扩容,轻松的迁移扩展
3、更简单的系统运维, 简单的更新管理
4、更高效的计算资源利用
5、能高效地构建应用。
6、更快速的启动时间,由于直接运行于宿主内核,无需启动完整的操作系统
一个虚拟机上可以运行多个容器实例 - 结构
镜像(image):可以看作一个模板,可以通过这个模板来创建容器服务
容器(container):独立运行一个或一个组应用,通过镜像创建,相当于一个实例
仓库(repository):存放镜像的地方
安装Docker
- 卸载旧的版本
$sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
- 安装
sudo yum install -y yum-utils
- 设置镜像地址
sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo --- 推荐使用阿里云镜像 #https://download.docker.com/linux/centos/docker-ce.repo --国外镜像
- 更新软件索引
sudo yum makecache fast
- 安装docker相关内容
docker -ce 社区版
docker -ee 企业版
sudo yum install docker-ce docker-ce-cli containerd.io
- 启动Docker
sudo systemctl start docker
- 获取docker的版本
docker versiondock
- 测试
docker run hello-world
- 查看下载的 hello-world镜像
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 2 months ago 13.3kB nacos/nacos-server 2.0.1 90c4c6c5d925 7 months ago 1.04GB
卸载Docker
- 卸载依赖
yum remove docker -ce docker -ce-cli containerd,io
- 删除资源
rm -rf /var/lib/docker ---默认工作路径
阿里云镜像加速
- 阿里云 --容器服务
- 镜像加速器
- 配置使用
sudo mkdir -p ./etc/docker sudo tee ./etc/docker/daemon.jsin<<-'EOF' { "registry-mirrors":["地址"] } sudo systemctl daemon-reload sudo systemctl restart docker
Docker的常用命令
帮助命令
docker version #显示docker的版本信息 docker info #docker的系统信息,包括镜像及容器的数量 docker help #帮忙命令
帮助文档地址:https://docs.docker.com/reference/
镜像命令
docker images 查看所有本地主机上的镜像 #解释 REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的ID CREATE 镜像的创建时间 SIZE 镜像的大小 #可选项 -a, --all 列出所有的镜像 --digests Show digests -f, --filter filter Filter output based on conditions provided --format string Pretty-print images using a Go template --no-trunc Don't truncate output -q, --quiet 只显示镜像的ID
docker search 搜索镜像 例子:docker serach mysql 添加参数:--filter=STARS=3000 # 搜索出来的镜像STARS大于3000
docker pull mysql #默认下载最新版 等价于:docker pull docker.io/library/mysql:latest 添加参数: :tag #添加版本信息 联合文件系统
docker rmi -f 镜像ID #删除镜像 docker rmi -f $(docker images -aq) #递归删除所有镜像
容器命令
#启动容器 docker run[可选参数] image #参数说明 --name= "容器名称" 容器名称,用于区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 -P 随机指定端口 例子 ##启动并进入容器 docker run -it 容器名称 /bin/bash ##退出并停止容器 exit ##容器不停止退出 Ctrl + P + Q
#查看运行的容器 docker ps #查看曾经运行过的容器 docker ps -a #显示最近创建的容器 -n = ? #只显示容器的编号 -q
#删除容器(不能删除正在运行的容器,需加 rf -f) 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 #Q强制停止当前容器 docker kill 容器的ID
其他容器命令
docker run -d 镜像名称 问题: docker ps 发现镜像停止了 原因: docker 容器使用后台运行时,就必须有一个前台的进程,docker发现没有应用,就会自动停止 如 nginx容器启动后,法相自己没有提供服务,就会立即停止
#查看日志 docker logs -f -t --tail t条数 容器ID
#查看容器进程信息 docker top 容器ID
#查看容器内部的信息 docker inspect 容器的ID
#查看容器内部的信息 docker inspect 容器的ID
#查看状态 docker stats
进入当前正在运行的容器
#我们通常容器都是使用后台方式运行的,需要进入容器 #命令 方式一:进入容器后开启一个新的终端,可以在里面操作 docker exec -it 容器的ID bashShell 例子: [root@localhost ~]# docker exec -it 90185ae982b0 /bin/bash root@90185ae982b0:/apache-zookeeper-3.6.0-bin# 方式二:进入容器正在执行的终端,不会启动新的进程 docker attach 容器的ID
#从容器内拷贝文件到主机上 docker cp 容器的ID:容器内的路径 目标主机的路径
练习
安装Nginx
docker search nginx #搜索 docker pull nginx #拉取 docker run -d --name nginx01 -p :3344:80 nginx #启动 -d 后台运行 -p 宿主机端口:容器内部端口 暴漏端口于宿主机 curl localhost:3344 #测试 #进入容器 [root@localhost ~]# docker exec -it nginx01 /bin/bash root@4200055aa7ae:/# whereis nginx nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx root@4200055aa7ae:/# cd /etc/nginx root@4200055aa7ae:/etc/nginx# ls conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
安装tomcat
docker run -it --rm tomcat:9.0 该命令表示用完即删,一般用于测试 docker pull tomcat docker run -d -p 3355:8080 --name tomcat01 tomcat docker exec -it tomcat01 /bin/bash
发现 1:linux命令少了 2:没有webapps
原因:阿里云镜像的原因,默认是最小的镜像,所有不必要的都被剔除
解决方法:
docker exec -it tomcat01 /bin/bash cp -r webapps.dist/* webapps
部署es
[root@localhost ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.16.2 [root@localhost ~]# curl localhost:9200 { "name" : "12c7a95dad74", "cluster_name" : "docker-cluster", "cluster_uuid" : "OqhjqILdQ3SetCie7pnOSg", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } -e 添加环境配置 [root@localhost ~]# docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.16.2
配置可视化(pointainer)
docker run -d -p 8088:9000\ --restart=always -v /var/run/docker.sock:var/run/docker.sock --name portainer1 --privileged=true portainer/portainer
这篇关于Docker入门——初识Docker的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18Docker-Compose容器集群化入门教程
- 2024-11-18Docker镜像仓库入门指南:轻松上手管理Docker镜像
- 2024-11-18Docker容器化部署入门教程:轻松掌握基础概念与实战技巧
- 2024-11-18Docker-Compose容器集群化学习入门教程
- 2024-11-18Docker镜像仓库学习:从入门到实践指南
- 2024-11-18Docker容器化部署学习:从入门到实践指南
- 2024-11-18Docker-Compose容器集群化入门:新手指南
- 2024-11-18Docker镜像仓库入门:新手必读指南
- 2024-11-18Docker容器化部署入门:新手必读指南
- 2024-11-18Docker Compose 文件中网络的 external: true 属性表示什么意思?-icode9专业技术文章分享