一、docker基础,环境准备

前面了解了一下chroot和LXC容器技术,有了前面的引入,今天就开始学习docker了。

首先,docker是通过内核虚拟化技术实现的,namespace用于提供隔离环境,cgroup作资源限制;

因为docker本质上属于一个进程,如果占用资源太多,会out of memory直接杀掉进程;

正因为容器(进程)容易死,才会有后面的K8S(K8S容器编排工具),提供容器的高可用;

喊句口号:build,ship and run any app, any where

因为容器有自己独自的系统文件rootfs,所以如果说在容器中安装了软件,打包以后,移动到任何环节,软件运行使用的文件都没变过,所以可以运行在anywhere;

安装docker-ce,步骤摘自阿里云

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

安装完成后,可以通过命令查看docker版本

复制代码
[root@docker-1-26 ~]# docker version
Client: Docker Engine - Community               #客户端信息,docker-ce 社区版
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15                #go语言编写
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64              #系统和架构
 Experimental:      false                  #实验版本,否

Server: Docker Engine - Community              #服务端
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
[root@docker-1-26 ~]#
复制代码

docker三大组件:镜像、容器、仓库。启动容器需要镜像文件。镜像文件存放在仓库中。其实还有存储(卷)、网络

启动第一个容器:

复制代码

[root@docker-1-26 ~]# cat /etc/docker/daemon.json          #配置docker镜像加速,直接下载的话会很慢

{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}                                      #是否加速成功,可以通过docker info查看

 

[root@docker-1-26 ~]#

[root@docker-1-26 ~]# docker run -d -p 80:80  nginx       #run:创建并运行一个容器;-d:置于后台;-p:端口映射;nginx:docker镜像的名字

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
bb79b6b2107f: Downloading
5a9f1c0027a7: Download complete
b5c20b2b484f: Download complete
166a2418f7e8: Download complete
1966ea362d23: Download complete
latest: Pulling from library/nginx
bb79b6b2107f: Pull complete
5a9f1c0027a7: Pull complete
b5c20b2b484f: Pull complete
166a2418f7e8: Pull complete
1966ea362d23: Pull complete
Digest: sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b
Status: Downloaded newer image for nginx:latest      #nginx标识镜像名称,latest表示tag
21790a0c8078413011f089067abab7d3cb466cf966f32a941d34fb86c701e923

 
复制代码

这样就可以直接访问NGINX了

 

 

 

 

 在宿主机上查看端口状态发现:

复制代码
[root@docker-1-26 image]# netstat -tnlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1054/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1591/master
tcp6       0      0 :::80             :::*               LISTEN    4717/docker-proxy      #创建时端口映射为80,所以这里可以查看到相应端口
tcp6       0      0 :::22                   :::*                    LISTEN      1054/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1591/master
复制代码
[root@docker-1-26 image]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        6 days ago          133MB
[root@docker-1-26 image]#

 

posted @   woshinidaye  阅读(130)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
点击右上角即可分享
微信分享提示