Docker:

Docker是用Go语音开发,在软件系统上做到资源的隔离,不像虚拟机会将整套系统复制,其虚拟机本身的运行就占据了实体机的部分性能.而Docker的资源隔离则不会,在Docker中跑资源和在物理机上跑资源基本相似。

Docker环境依赖:

Docker 只能在基于linux系统运行的环境中,在windows中使用docker desktop。
Docker需要Centos7.* 且64位,3.1.0以上版本才可用。

uname -a

Docker安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

此处安装的是docker-engine。

Docker 镜像:

{"registry-mirrors":["https://hub-mirror.c.163.com/"]}
  • 镜像生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

异常:```
Ubuntu执行错误:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

sudo dockerd
failed to start daemon: Error initializing network controller: error obtaining controller instance




>docker info    //查看
* docker启动,停止,和重启:
>sudo systemctl start docker
>sudo docker run hello-world
>sudo systemctl restart docker
>sudo systemctl stop docker
>yum remove docker-ce  //卸载
    docker的镜像文件存在  /var/lib/docker/image下。
## Docker组成:
+ 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
+ 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
+ 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

## Docker容器创建:
一般我们是通过在linux的物理机上安装docker-engine,转化镜像地址。然后通过命令下载容器。
此处以下载cento为例:
https://registry.hub.docker.com/_/centos/
> docker pull centos:centos7
> docker images   //查看下载的镜像文件

安装容器:
> docker run -itd --name centos-test centos:centos7
> docker ps  //查看启动的容器

容器操作:
> \>docker run centos:centos7 /bin/echo "hello Docker"
启动并进入伪终端中
> \>docker run -it centos:centos7 /bin/bash

		-t 表示开启伪终端
		-i 表示对输入可以交互
这样就和我们在linux下操作一样了。
> \>cat proc/version     //查看版本
> \>exit //或者Ctrl + D 退出当前伪终端,不过容器还在

容器ID:
> \>docker run centos:centos7 /bin/sh -c "while true; do echo hello world; sleep 1; done"  //使用这种启动容器,开启了循环,但是循环导致我们退不出来
> \>docker ps    //可以看到容器container_ID
![image](https://img2020.cnblogs.com/blog/1154541/202104/1154541-20210427203506266-1844380170.png)

</br>docker容器中的状态STATUS:
* created(已创建)
* restarting(重启中)
* running 或 Up(运行中)
* removing(迁移中)
* paused(暂停)
* exited(停止)
* dead(死亡)
> \>docker stop [container_id]  //停止刚才写的 循环helloworld!
> \>docker start [container_id] // 启动停止的容器,注意停止后会在docker ps中消失
> \>docker restart [container_id] //重启
> \>docker ps -a  //可查看所有的死掉的和在运行的
> \>docker run -d centos:centos7 /bin/sh -c "while true; do echo hello world; sleep 1; done"  // -d 表示后台执行,会返回container_id
> \>docker logs [container_id]  //可看到执行的内容 helloworld!

docker我们启动一些容器,要让容器在后台运行,需要加 -d
> \>docker run -itd centos:centos7 /bin/bash

这样容器就不会直接进入伪终端中。
如果我们需要进入终端

> \>docker attach [container_id] /bin/bash    //慎用,退出后,容器会死亡
> \>docker exec -it [container_id] /bin/bash  //退出,不会死亡
> \>docker exec --help //查看内容
posted on 2024-09-27 10:36  zhaoqiang1980  阅读(27)  评论(0)    收藏  举报