【我的Linux,我做主!】Docker基础用法

在Docker的主导下,又有了OCI和OCF的格式和标准。其中OCI表示的是Open Container Initiative,由Linux基金会主导于2015年6月创立,旨在围绕容器格式和运行时制定一个开放的工业化标准,其中这个标准包含runtime-spec运行时标准和image-spec镜像格式标准。所以后来就有了OCF即Open Container Format,runC是这个开放式容器标准的实现之一。
对于docker来说,他们专门提供了一个容纳容器镜像的站点https://hub.docker.com/ ,在这里可以找到大多数的容器镜像。
(1)Docker的架构
整个docker包含一个Client端,还包含一个Docker_HOST即为server端,所以docker是一个C/S架构的应用程序,docker有很多子程序、子命令,其中有一个是Docker daemon表示运行为守护进程,它可以监听在某个套接字之上,它支持3种套接字类型:第一种是IPv4套接字,第二种是IPv6套接字,第三种是Unix Socket file套接字。Docker_HOST是真正运行容器的主机,主要包含Containers容器和Images镜像。而镜像来自于Registry即docker的镜像仓库,默认本地是没有的,镜像是分层构建的,所有镜像都是只读的,所以启动容器时是基于镜像启动容器的,在镜像的基础之上为每个容器创建一个专用的可写层,从而来启动一个容器,所以镜像也需要在docker服务器的本地存储,但是在主机上具体会运行哪些容器,我们事先也是无法评估的,所以会在专门的公共仓库放置镜像,我们在需要使用的时候需要把镜像加载到本地,这里使用的是http或https协议。
【我的Linux,我做主!】Docker基础用法
对于docker来说,它主要由三个部分组成:Docker daemon,Docker client和Docker registries,而Docker registries目前事实上的位置默认是Docker Hub,但尽管如此,互联网上能提供镜像仓库的地方还有很多,甚至我们用户自己还可以创建自己的私有账户。
其中docker的对象主要包括:images镜像、containers容器、networks网络、volumes存储卷、plugins插件等其他对象。安装docker依赖的基础环境:64bits位CPU,Linux Kernel 3.10+及其以上的版本,Linux Kernel cgroups and namespaces
(2)Docker的镜像文件
对于CentOS7系统来说,docker存在于它的Extras repository当中,它的版本我们可以通过访问清华大学镜像https://mirrors.tuna.tsinghua.edu.cn/ 来了解一下,我们发现在CentOS系统自带的docker软件时1.13的版本,版本比较老旧,所以我们不建议大家使用CentOS自己自带的docker版本,因为现在很多应用程序要求我们使用的docker版本都比较新。
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
我们可以找到镜像文件Index of /docker-ce/linux/centos/目录下的docker-ce.repo文件(图2-4),然后下载到我们的node01服务器上(图2-5和图2-6)
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
然后我们编辑/etc/yum.repos.d目录下的docker-ce.repo文件,把清华大学站点镜像(图2-7和图2-8)的linux标识之前的地址替换repo文件中linux标识之前的地址(图2-6-1和图2-6-2)
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
此时我们便发现docker-ce的程序包便已经显示在yum仓库中了。
【我的Linux,我做主!】Docker基础用法
(3)安装docker-ce
我们在node01服务器上使用yum直接安装docker-ce(图2-10),需要知道的是我们安装好docker后不用做任何的修改,直接启动docker的服务。
# yum install docker-ce
【我的Linux,我做主!】Docker基础用法
docker服务在启动的时候默认会加载一个daemon.json的配置文件,它主要存放在/etc/docker目录下。为了让镜像下载的速度快一些,我们可以定义一个镜像加速器,镜像加速器主要来自于三类:docker cn的官方站点,还有阿里云加速器,同时中国科技大学的镜像加速器也非常不错。
# mkdir /etc/docker
# vim /etc/docker/daemon.json
#镜像加速器
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
(4)运行docker常用命令(登录网址:https://hub.docker.com/
(4.1)
# systemctl start docker.service
启动docker服务
# docker version
查看docker的版本
【我的Linux,我做主!】Docker基础用法
# docker info
查看docker更详细的环境信息(可以看到docker使用的是overlay2的存储后端文件系统)
【我的Linux,我做主!】Docker基础用法
# docker search nginx
搜索nginx镜像
【我的Linux,我做主!】Docker基础用法
# docker pull nginx:1.19.6-alpine
下载nginx的1.19.6-alpine版本的镜像
【我的Linux,我做主!】Docker基础用法
# docker image ls
列出镜像文件
【我的Linux,我做主!】Docker基础用法
(4.2)
# docker pull busybox
将busybox镜像拖下来
# docker image rm busybox:latest
把busybox的镜像删除
# docker image ls --help
查看镜像查看的使用帮助信息
【我的Linux,我做主!】Docker基础用法
# docker image ls --no-trunc
显示镜像的完整校验信息
【我的Linux,我做主!】Docker基础用法
(4.3)基本命令模型
# docker container --help
docker容器命令帮助
【我的Linux,我做主!】Docker基础用法
# docker container create --name b1 busybox:latest
创建一个容器但是不启动
# docker container start -i -a b1
启动一个或多个处于停止状态的busybox容器,其中i表示交互,a表示附加到终端上
# docker container stop b1
停止运行的容器
# docker container kill b1
强制停止运行的busybox容器
# docker container run --name b1 -it busybox:latest
创建完容器后直接运行
# docker container rm b1
删除busybox容器
# docker container pause b1
暂停容器
# docker container unpause b1
取消暂停的容器
# docker container top 1b7a98d0bc3f
根据容器ID资源消耗比例排序运行的情况
# docker container ls
显示运行的容器,此命令和docker ps的效果一样
# docker container ls -a
显示所有状态的容器,包括已经停止的
# docker network ls
显示docker本地的所有网络
【我的Linux,我做主!】Docker基础用法
(4.4)创建busybox容器
# docker run --name b1 -it busybox:latest
# docker container run --name b1 -it busybox:latest
启动一个busybox的容器,其中name为b1,使用i交互式,使用t终端启动
【我的Linux,我做主!】Docker基础用法
在busybox中创建一个index.html文件,并写上相应的欢迎语,然后把容器中的httpd服务启动起来
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
此时我们发现一个容器已经启动起来了,并且新开一个终端可以访问到httpd服务提供的页面。
# docker container ls
显示当前运行的所有容器
# docker inspect b1
显示b1容器的详细信息
【我的Linux,我做主!】Docker基础用法
【我的Linux,我做主!】Docker基础用法
# docker container ls -a
显示所有状态的容器,包括已经停止的
【我的Linux,我做主!】Docker基础用法
# docker container start -i -a b1
启动一个或多个处于停止状态的busybox容器,其中i表示交互,a表示附加到终端上
【我的Linux,我做主!】Docker基础用法
# docker container kill b1
强制停止运行的busybox容器
# docker container rm b1
在容器停止运行后,删除创建的b1容器
(4.5)创建nginx容器
# docker image ls
查看当前系统的镜像文件
# docker run --name web1 -d nginx:1.19.6-alpine
启动一个nginx的容器,其中名字叫web1,使用d参数到后台运行
# docker ps
查看容器运行的状态
【我的Linux,我做主!】Docker基础用法
# docker inspect web1
查看web1容器运行的详细信息
# curl 172.17.0.2
使用curl命令可以正常的访问nginx服务
【我的Linux,我做主!】Docker基础用法
(4.6)创建redis容器
# docker serach redis
查看redis的镜像版本
# docker run --name kvstor1 -d redis:4-alpine
创建一个redis镜像,name为kvstor,然后使用d到后台运行
# docker ps
查看当前容器运行的状态
# docker exec --help
查看使用交互式命令的帮助
# docker exec -it kvstor1 /bin/sh
绕过容器的边界进入到kvstor1的容器,使用it的交互参数,使用的命令是/bin/sh
【我的Linux,我做主!】Docker基础用法
# docker container logs web1
直接在控制台上查看web1容器产生的所有日志
【我的Linux,我做主!】Docker基础用法
(5)备注:
alpine是一个专门用于构建非常小的发行版的文件的微型发行版,它能够为你的程序运行提供基础环境,但是体积非常小,这样构建测试环境会非常方便。
如下表示的docker容器运行过程中经历的所有状态一个容器创建完后会经历running,paused,stopped以及deleted状态,运行的流程如下所示
【我的Linux,我做主!】Docker基础用法





















































































































































—————— 本文至此结束,感谢阅读 ——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章