探索云原生技术之基石-Docker容器入门篇(1)【与云原生的故事】
❤️💛🧡💚💔🖤💜💙❤💕💞💓💗❣️💝💘💖❤️💛🧡💚💔🖤💜💙❤💕💞💓💗❣️💝💘💖💖💖 💖
❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💖
💛博客首页:C站个人主页🌞 💖
💗作者目的:如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门,共同进步! 💖
❤️💛🧡💚💔🖤💜💙❤💕💞💓💗❣️💝💘💖❤️💛🧡💚💔🖤💜💙❤💕💞💓💗❣️💝💘💖💖💖 💖
@[toc]
探索云原生技术之基石-Docker容器入门(1)
本博文一共有6篇,如下
- 探索云原生技术之基石-Docker容器入门篇(1)
- 探索云原生技术之基石-Docker容器入门篇(2)
- 探索云原生技术之基石-Docker容器入门篇(3)
等你对Docker有一定理解的时候可以看高级篇,不过不太建议。
- 探索云原生技术之基石-Docker容器高级篇(1)
- 探索云原生技术之基石-Docker容器高级篇(2)
- 探索云原生技术之基石-Docker容器高级篇(3)-视情况而定
剧透:未来将出云原生技术-Kubernetes(k8s),此时的你可以对Docker进行统一管理、动态扩缩容等等。
看完之后你会对Docker有一定的理解,并能熟练的使用Docker进行容器化开发、以及Docker部署微服务、Docker网络等等。干起来!
什么是云原生
Pivotal公司的Matt Stine于2013年首次提出**云原生(Cloud-Native)**的概念;2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器。
总而言之,符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。
(此处摘选自《知乎-华为云官方帐号》)
什么是Docker
- Docker 是一个开源的应用容器引擎,基于Go语言开发。
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
- 容器是完全使用沙箱机制(容器实例相互隔离),容器性能开销极低(高性能)。
总而言之:
Docker是一个高性能的容器引擎;
可以把本地源代码、配置文件、依赖、环境通通打包成一个容器即可以到处运行;
使用Docker安装软件十分方便,而且安装的软件十分精简,方便扩展。
Docker三大基本概念
- 镜像(image):相当于Java的类
- 容器(container):相当于通过Java的类new出来的对象
- 仓库(repository):类似代码仓库,是Docker集中存放镜像文件的场所
使用阿里云镜像安装Centos7
-
1:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 进入下载页面
-
2:点击下面的File Name为CentOS-7-x86_64-DVD-2009.iso 链接即可。
-
3:通过VM虚拟机安装centos7。(这里省略了。)
如何安装Docker容器
- 注意:这里我们全都是基于Centos7系统进行操作。
卸载Docker容器
- 1:查看已安装的docker版本
[root@aubin ~]# yum list installed |grep docker
输出结果:
containerd.io.x86_64 1.4.4-3.1.el7 @docker-ce-stable
docker-ce-cli.x86_64 1:20.10.6-3.el7 @docker-ce-stable
docker-scan-plugin.x86_64 0.7.0-3.el7 @docker-ce-stable
- 2:删除docker
yum -y remove containerd.io.x86_64
yum -y remove docker-ce-cli.x86_64
yum -y remove docker-scan-plugin.x86_64
安装Docker容器
- 1:设置 Docker 仓库
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 2:安装 Docker Engine-Community
sudo yum install docker-ce docker-ce-cli containerd.io
- 3:检查是否安装好docker
[root@aubin ~]# docker version
Client: Docker Engine - Community
Version: 20.10.14
API version: 1.41
Go version: go1.16.15
Git commit: a224086
Built: Thu Mar 24 01:49:57 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
- 4:启动docker
sudo systemctl start docker
Docker接入阿里云镜像加速器
配置镜像加速器方法。
- 准备工作:
- 1:首先进入阿里云容器镜像服务 跳转阿里云容器镜像服务
- 2:点击镜像工具下面的镜像加速器
- 3:拿到你的加速器地址和下面第二步的registry-mirrors的值替换即可。
针对Docker客户端版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
- 第一步:
mkdir -p /etc/docker
- 第二步:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://u01jo9qv.mirror.aliyuncs.com"]
}
EOF
- 第三步:
sudo systemctl daemon-reload
- 第四步:
sudo systemctl restart docker
最后就接入阿里云容器镜像加速器成功啦。
Docker入门学习
Docker-helloworld
- 1:搜索hello-world的镜像
docker search hello-world
- 2:从docker上面拉取镜像到本地
docker pull hello-world:latest
这些命令含义后面会讲,现在先不讲
- 3:运行docker镜像,生成docker容器实例
docker pull hello-world:latest
- 4:输出结果(完成了)
Hello from Docker!
This message shows that your installation appears to be working correctly.
我们第一个docker程序完成啦!!!
查看docker状态
sudo systemctl status docker
- active就是你当前docker的状态。
设置docker开机自动启动
sudo systemctl enable docker
查看docker版本
sudo docker version
docker帮助文档
docker --help
- 如下:
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides
DOCKER_HOST env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default
"info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)
builder Manage builds
buildx* Docker Buildx (Docker Inc., v0.8.1-docker)
config Manage Docker configs
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
scan* Docker Scan (Docker Inc., v0.17.0)
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Docker镜像命令
列出镜像
列出所有镜像
docker images
列出指定镜像
docker images hello-world
搜索镜像
搜索指定镜像名的所有镜像
- 从Docker Hub中搜索镜像
- 例如:我们搜索Ubuntu镜像
docker search ubuntu
搜索指定镜像名的镜像并指定展示条数
- –limit 1:意思是只取搜索出来的镜像第一条
docker search --limit 1 ubuntu
拉取镜像
- 1:比如我们要拉取Ubuntu的镜像,我们先搜索一下有没有这个镜像
docker search ubuntu --limit 1
- 2:开始我们的重点内容:拉取镜像
docker pull ubuntu:latest
- pull:拉取镜像
- ubuntu:镜像名
- latest:拉取该镜像在仓库的最新版本(其实相当于=docker pull ubuntu)
说明我们拉取镜像成功了
docker system的使用
查看docker磁盘使用情况
sudo docker system df
删除本地镜像
例如我们要删除hello-world镜像:
docker rmi -f hello-world
- rmi:意思就是remove image(删除镜像)
- -f:意思是force,强制删除。(如果要删除镜像最好加上这个,不然有时候会删除不了)
docker的虚悬镜像(dangling image)的查看和删除
什么是虚悬镜像?
- 简而言之:虚悬镜像就是REPOSITORY(仓库名)和TAG(标签)都为**< none >的镜像**。
- 虚悬镜像可以随意删除。因为虚悬镜像没有价值。
虚悬镜像的查看
docker images -f dangling=true
虚悬镜像的删除
docker rmi $(docker images -q -f dangling=true)
Docker容器命令
生成Ubuntu交互式容器实例
docker run -it --name "youzhengjie" ubuntu /bin/bash
- run:将指定镜像生成容器实例;
- -i:开启交互模式
- -t:伪终端
- -it:开启交互模式和伪终端(命令行),一般来说-it是成对出现的
- –name:指定容器实例的NAMES(名称),不写则默认。
- /bin/bash:容器内执行/bin/bash命令
使用Ubuntu交互式容器
- 执行完上面命令就进入了Ubuntu容器里面
- 我们可以对它输入Linux命令,就像本机的centos7系统一样
- 但是会出现以下这种情况。
- 我们可以发现,vim命令无法在这个Ubuntu容器里面使用,那么这是为什么呢?
- 因为我们docker安装的软件都是简化版(只留下运行时所必须要用到的),其余的东西都没有,这就是为什么docker里面的Ubuntu仅仅只有几十MB的占用内存的原因了。
- 但是别慌,docker中的Ubuntu虽然没有这些命令,但是可以通过我们后期去加装自己所需要的。(这个后面会说!)
列出容器
列出所有状态为Up的容器
docker ps
- ps:指的是容器实例
列出所有容器(包括状态为Up、Exited)
docker ps -a
列出最近创建的一个容器
docker ps -l
列出所有容器的前n个
docker ps -a -n 1
- -n:指定输出几个
只列出所有容器的id
docker ps -aq
退出容器的两种办法
- 1:退出并且关闭容器(exit命令)
- 2:只退出不关闭容器(ctrl p+q)
❤️💛🧡我们下一章见❤️💛🧡
【与云原生的故事】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/345260
- 点赞
- 收藏
- 关注作者
评论(0)