Docker基础学习和使用

一、什么是docker

很久以前看过,但是很久没有用到,基本忘了,后来又学习,才有一种恍然大悟的感觉。
Docker 包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。

  • 镜像: Docker 运行容器的前提,Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
  • 仓库:存放镜像的场所
  • 容器:运行镜像,能对外提供服务能力的镜像运行时,叫做容器。
    通俗的说,就是我们把软件系统包括运行这个系统所需要的相应版本jdk、tomcat等环境、配置都可以打包成一个镜像,存放到仓库中,然后我们换了一台机器,需要运行这个软件系统,我们就从仓库中取出来,这个时候不用我们再去配置它的环境,因为镜像中都已经存在了,然后我们在运行镜像,就叫做容器,可以发现 镜像可以很方便的做迁移,备份,存储,交付

二、容器和虚拟机的区别

虚拟机:
在这里插入图片描述
用过虚拟机的都知道,比如centos系统,我们要在VM用centos镜像新建一个虚拟机A,安装系统App A所需要的环境。新建一个虚拟机B,安装系统App B所需要的环境,如果有很多个所需环境不同的App,新建很多虚拟机非常消耗资源。App在虚拟机中运行时,调用需要经过虚拟化软件的处理,才能调用到真正的宿主机操作系统。 我们传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。,每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

Docker:
在这里插入图片描述
App在容器中运行,直接可以使用宿主机操作系统,省事省力,可喜可贺。容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。

三、Docker基础使用

光说理论意义不大,要实操才能更加理解一些,在这里我们拉取一个ubuntu18的镜像体验使用

1.安装docker

yum install -y docker-io

查看版本:

docker version

2.启动docker服务

service docker start

3.拉取ubuntu18镜像

docker pull ubuntu:18.04

4.启动ubuntu18
创建一个ubuntu18的容器,并且运行容器。-i 表示标准模式;-t 表示是否分配一个伪终端,默认false;加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到,我这里没加)。

docker run -it ubuntu:18.04

如果这一步报错
docker-runc not installed on system
执行命令:

cd /usr/libexec/docker/
sudo ln -s docker-runc-current docker-runc
sudo ln -s /usr/libexec/docker/docker-runc-current /usr/bin/docker-runc

运行之后可以看到我们进入ubuntu18终端
在这里插入图片描述
输入:

exit

5.查看容器
退出后我们查看一下所有容器
docker -ps 查看正在运行的容器
docker -ps 查看所有容器包括已经结束的

docker ps -a

在这里插入图片描述
使用docker start 启动一个已停止的容器:

docker start 86cbedf5e788

在这里插入图片描述
可以看到容器id为86cbedf5e788又运行起来了

6.停止容器
docker stop <容器 ID>

docker stop 86cbedf5e788

7.重启容器
docker restart <容器 ID>

docker restart 86cbedf5e788

8.进入容器
上面我们重启了ubuntu18容器,但是发现不像刚开始一样自动进入,用命令
(86cbedf5e788是我这里ubuntu的容器id,根据自己的来)

使用 docker attach 命令(如果从这个容器退出,会导致容器的停止)

docker attach 86cbedf5e788

使用exec命令(推荐使用,因为此退出容器终端,不会导致容器的停止)

docker exec -it 86cbedf5e788 /bin/bash

注意,这两个运行的前提都是容器已经启动,才可以进去

9.删除容器

docker rm -f 86cbedf5e788

执行以后会发现id为86cbedf5e788的容器被删除

清理掉所有处于终止状态的容器:

docker container prune

10.其它:
docker tag xxx tagname 镜像文件加标签;
docker search xxx 查找官方镜像;
docker rmi xxxID/xxxname 删除镜像文件;
docker rm xxx 删除容器;
docker push xxx;上传镜像;
docker import xxx 导入镜像;
docker stop xxx 终止容器;
docker pause xxx 暂停容器;
docker unpause xxx 恢复容器;
docker kill xxx 强制杀死容器;
docker attach xxxID/xxxname 进入后台运行的容器;
docker container inspect xxx 查看一个容器;
docker top xxx 查看容器内进程;
docker stat xxx 查看容器内cup使用情况;
docker container port test 查看容器端口;
docker commit origin_container_id new_image 执行一些新的操作后添加容器到另外一个镜像/保存版本号

猜你喜欢

转载自blog.csdn.net/weixin_43909848/article/details/107694175