初识docker

What is docker

A platform for building,running and shipping applications:是一个构建运行的平台并以一致的方法发送应用程序。可以轻松的将我们的应用程序与它所需要的一切打包在一起,并在任何有docker的机器使用它。

  • 隔离环境允许多个应用程序使用,某些软件不同版本并排(一个节点9,一个节点14),不会互相弄乱。不再使用它时,可以删除应用程序。
    docker环境隔离
    删除应用程序
  • Consistently build,run and ship applicaitons
Virtual Machines vs Containers

Containers : An isolated environment for running an application

  • Allow running multiple apps in isolation
  • Are lightweight
  • Use OS of the host(shared system)
  • start quicker(Usually a second)
  • Need less hardware resources(don not need to assign specific disk or memory)

Virtual Machines : An abstraction of a machine(physical hardware)
一台电脑两个系统
VM

Hypervisor:

  • VirtualBox
  • VMware
  • Hyper-v(Windows only)

作用:Run application in isolation
Virtual machine
Problems:

  • Each VM needs a full-blown OS
  • Slow to start
  • Resource intensive(physics resource,like cpu,memory,disk…)
Architecture of Docker

Docker use client-server architecture,it has a client-component and restful api server component
docker
essence:docker essencs
A kernel manages application and hardware resource

different system core:
system core
docker

Installing Docker

docker hub or aliyun
docker version
在这里插入图片描述
IMAGE:

  • A cut-down OS
  • A runtime environment(eg Node)
  • Application files
  • Third-party libraries
  • Environment variables

Building an image of an application are written in a docker file that we can package up our application into a image
images

Docker architectureDocker architecture
Development Workflow
常用命令
# 帮助命令
[root@iZf8zirbfebziiuh71055zZ /]# docker 命令--help
# Search命令
[root@iZf8zirbfebziiuh71055zZ /]#docker search mysql
# 镜像命令
[root@iZf8zirbfebziiuh71055zZ /]# docker pull mysql:8.0.27
> #删除镜像
# 删除指定的容器
[root@iZf8zirbfebziiuh71055zZ /]# docker rmi -f 容器id
# 删除多个容器
[root@iZf8zirbfebziiuh71055zZ /]# docker rmi -f 容器id1 容器id2 容器id3
# 批量删除容器
[root@iZf8zirbfebziiuh71055zZ /]# docker rmi  -f $(docker images -aq)

容器命令

有镜像了才有容器,linux,下载一个contos镜像来测试

docker  pull centos

新建容器并启动

root@iZf8zirbfebziiuh71055zZ /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         8.0.27    3218b38490ce   3 days ago     516MB
hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB
centos        latest    5d0da3dc9764   3 months ago   231MB
#启动并进入容器(开一个容器)
[root@iZf8zirbfebziiuh71055zZ /]# docker run -it centos /bin/bash
[root@c9416b31cbdd /]# 
[root@c9416b31cbdd /]# ls  #查看容器centos,
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
#退出容器
[root@c9416b31cbdd /]# exit
exit
[root@iZf8zirbfebziiuh71055zZ /]# ls
bin   dev  home  lib64       media  opt   root  sbin  sys  usr
boot  etc  lib   lost+found  mnt    proc  run   srv   tmp  var

容器的容器

docker ps -options
//列出正在运行的容器 
[root@iZf8zirbfebziiuh71055zZ /]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# 列出正在运行的容器+历史容器运行记录
[root@iZf8zirbfebziiuh71055zZ /]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED             STATUS                         PORTS     NAMES
c9416b31cbdd   centos        "/bin/bash"   12 minutes ago      Exited (0) 8 minutes ago                 agitated_bartik
3cfb8cabb443   hello-world   "/hello"      About an hour ago   Exited (0) About an hour ago             adoring_payne
ece492f0c3ff   hello-world   "/hello"      About an hour ago   Exited (0) About an hour ago             loving_driscoll
# 看最近的一条
[root@iZf8zirbfebziiuh71055zZ /]# docker ps -a -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
c9416b31cbdd   centos    "/bin/bash"   18 minutes ago   Exited (0) 14 minutes ago             agitated_bartik

退出容器

exit #退出并停止容器
Ctrl + p +q #退出不停止容器

删除容器

docker rm 容器id    #删除指定容器
docker rm -f 容器 id #强制删除(包括正在运行的容器)
docker rm -f $(docker ps -a -q) #删除全部容器
docker ps -a  -q|xargs docker rm  #删除全部容器

启动和停止容器

docker start 容器ID  #启动
docker restart 容器id #重启当前正在运行的容器
docker stop 容器id #停止
docker kill 容器id #强制停止

后台启动容器

docker  run -d centos  #后台启动容器
[root@iZf8zirbfebziiuh71055zZ /]# docker run -d centos
8c92ec720f6460ad904c3e271ce2a5513e318f1a49ab3e6c5a31c3210f9840da
#docker ps 发现centos停止了

常见的坑:容器使用后台运行,就必须有一个前台进程,docker发现没有应用,就会自动停止

# nginx,容器启动后,发现自己没有服提供服务,就会立即停止
[root@iZf8zirbfebziiuh71055zZ /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

#查看日志

 docker logs -f -t --tail 容器id  #查看容器的日志
[root@iZf8zirbfebziiuh71055zZ /]# docker logs -f -t --tail  5d0da3dc9764
"docker logs" requires exactly 1 argument.
See 'docker logs --help'.

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container
# 发现容器未启动,启动容器
[root@iZf8zirbfebziiuh71055zZ /]# docker run -it centos /bin/bash
[root@8117337aa6b9 /]#  #使用ctrl+p+q 退出来,且不关闭容器
# 因容器没有东西,自动关闭,写入数据
[root@iZf8zirbfebziiuh71055zZ /]# docker run -d centos /bin/sh -c "while true;do echo wxj ;sleep 1;done"
4f12bf857d6b33c009347794c162d795b6a2c011c4a6c38de18c3aff4c727a14
[root@iZf8zirbfebziiuh71055zZ /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
4f12bf857d6b   centos    "/bin/sh -c 'while t…"   24 seconds ago   Up 23 seconds             quirky_wu
[root@iZf8zirbfebziiuh71055zZ /]# docker logs -f -t  4f12bf857d6b #查看全部日志
[root@iZf8zirbfebziiuh71055zZ /]# docker logs -f -t  --tail 10 4f12bf857d6b #查看十条日志


2-24T06:21:43.189053970Z wxj
2021-12-24T06:21:44.191090421Z wxj
2021-12-24T06:21:45.193158591Z wxj
2021-12-24T06:21:46.195195444Z wxj
2021-12-24T06:21:47.197205465Z wxj
2021-12-24T06:21:48.199200023Z wxj
2021-12-24T06:21:49.201269126Z wxj
2021-12-24T06:21:50.203297803Z wxj
2021-12-24T06:21:51.205127178

查看容器进程信息

[root@iZf8zirbfebziiuh71055zZ /]# docker top 4f12bf857d6b

查看

[root@iZf8zirbfebziiuh71055zZ /]# docker inspect 4f12bf857d6b
[
    {
        "Id": "4f12bf857d6b33c009347794c162d795b6a2c011c4a6c38de18c3aff4c727a14",
        "Created": "2021-12-24T06:19:41.713312099Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo wxj ;sleep 1;done"
        ],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 137,
            "Error": "",
            "StartedAt": "2021-12-24T06:19:41.94285143Z",
            "FinishedAt": "2021-12-24T06:23:50.102028795Z"
        },
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/4f12bf857d6b33c009347794c162d795b6a2c011c4a6c38de18c3aff4c727a14/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/4f12bf857d6b33c009347794c162d795b6a2c011c4a6c38de18c3aff4c727a14/hostname",
        "HostsPath": "/var/lib/docker/containers/4f12bf857d6b33c009347794c162d795b6a2c011c4a6c38de18c3aff4c727a14/hosts",
        "LogPath": "/var/lib/docker/containers/4f12bf857d6b33c009347794c162d795b6a2c011c4a6c38de18c3aff4c727a14/4f12bf857d6b33c009347794c162d795b6a2c011c4a6c38de18c3aff4c727a14-json.log",
        "Name": "/quirky_wu",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "pri
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值