docker的基本用法

docker的基本用法

OCI&OCF

OCI

开发容器倡议

  • 由Linux基金会主导于2015年6月创立
  • 旨在围绕容器格式和运行时制定一个开放的工业化标准
  • 包含两个规格
    • 运行时规范(runtime-spec)
    • 镜像规范(image-spec)

OCF

开放式容器格式

runC 是一个 CLI 工具,用于根据 OCI 规范生成和运行容器

docker架构

在这里插入图片描述

docker镜像与镜像仓库

为什么镜像仓库名字是Registry而不是repository?在docker中仓库的名字是以应用的名称取名的。
在这里插入图片描述
镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的。

docker对象

当您使用 docker 时,您正在创建和使用镜像、容器、网络、卷、插件和其他对象。

  • 镜像
    • 镜像是一个只读模板,其中包含创建 docker 容器的说明。
    • 通常,一个镜像基于另一个镜像,并带有一些额外的自定义。
    • 您可以创建自己的映像,也可以仅使用其他人创建并在注册表中发布的映像。
  • 容器
    • 容器是镜像的可运行实例。
    • 您可以使用 docker API 或 CLI 创建、运行、停止、移动或删除容器。
    • 您可以将容器连接到一个或多个网络,为其附加存储,甚至可以根据其当前状态创建新映像。

安装及使用docker

docker安装

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# curl -o docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1919  100  1919    0     0    186      0  0:00:10  0:00:10 --:--:--   266
[root@localhost yum.repos.d]# ls
CentOS-Stream-AppStream.repo  CentOS-Stream-Extras.repo            CentOS-Stream-PowerTools.repo
CentOS-Stream-BaseOS.repo     CentOS-Stream-HighAvailability.repo  CentOS-Stream-RealTime.repo
CentOS-Stream-Debuginfo.repo  CentOS-Stream-Media.repo             docker-ce.repo
[root@localhost yum.repos.d]# sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo
[root@localhost yum.repos.d]# yum -y install docker-ce
Docker CE Stable - x86_64                                              2.0 kB/s |  19 kB     00:09    
依赖关系解决。

docker加速

docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。

docker的加速有多种方式:

  • docker cn
  • 中国科技大学加速器
  • 阿里云加速器(需要通过阿里云开发者平台注册帐号,免费使用个人私有的加速器)
[root@localhost yum.repos.d]# cd /etc/docker/
[root@localhost docker]# ls
key.json
[root@localhost docker]# vi daemon.json
{
  "registry-mirrors": ["https://uemehekj.mirror.aliyuncs.com"]
}
[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker

docker常用操作

命令功能
docker searchSearch the Docker Hub for images
docker pullPull an image or a repository from a registry
docker imagesList images
docker createCreate a new conntainer
docker startStart one or more stopped containers
docker runRun a command in a new container
docker attachAttach to a runninng container
docker psList containers
docker logsFetch the logs of a container
docker restartRestart a container
docker stopStop one or more running containers
docker killKill one or more running containers
docker rmRemove onne or more containers
docker execRun a command in a running container
docker infoDisplay system-wide information
docker inspectReturn low-level information on Docker objects
//docker search
[root@localhost docker]# docker search hello-world
NAME                                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
hello-world                                Hello World! (an example of minimal Dockeriz…   1589      [OK]       
kitematic/hello-world-nginx                A light-weight nginx container that demonstr…   150                  
tutum/hello-world                          Image to test docker deployments. Has Apache…   87                   [OK]
dockercloud/hello-world                    Hello World!                                    19                   [OK]
crccheck/hello-world                       Hello World web server in under 2.5 MB          15                   [OK]
vad1mo/hello-world-rest                    A simple REST Service that echoes back all t…   5                    [OK]
arm32v7/hello-world                        Hello World! (an example of minimal Dockeriz…   3                    
ppc64le/hello-world                        Hello World! (an example of minimal Dockeriz…   2                    
datawire/hello-world                       Hello World! Simple Hello World implementati…   1                    [OK]
infrastructureascode/hello-world           A tiny "Hello World" web server with a healt…   1                    [OK]
thomaspoignant/hello-world-rest-json       This project is a REST hello-world API to bu…   1                    
ansibleplaybookbundle/hello-world-db-apb   An APB which deploys a sample Hello World! a…   1                    [OK]
ansibleplaybookbundle/hello-world-apb      An APB which deploys a sample Hello World! a…   1                    [OK]
souravpatnaik/hello-world-go               hello-world in Golang                           1                    
markmnei/hello-world-java-docker           Hello-World-Java-docker                         1                    [OK]
strimzi/hello-world-consumer                                                               0                    
strimzi/hello-world-streams                                                                0                    
koudaiii/hello-world                                                                       0                    
businessgeeks00/hello-world-nodejs                                                         0                    
burdz/hello-world-k8s                      To provide a simple webserver that can have …   0                    [OK]
nirmata/hello-world                                                                        0                    [OK]
strimzi/hello-world-producer                                                               0                    
freddiedevops/hello-world-spring-boot                                                      0                    
garystafford/hello-world                   Simple hello-world Spring Boot service for t…   0                    [OK]
wxia6256/hello-world                       hello-world                                     0                    


//docker pull
[root@localhost docker]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest


//docker images
[root@localhost docker]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   2 months ago   13.3kB


//docker create
[root@localhost docker]# docker create busybox
208cd2d82d54484552eba62eea24a3e2a9e8a54e1812b73fc615e17b2509f42d


//docker start
[root@localhost docker]# docker ps -a 
CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                          PORTS     NAMES
ab5c34fe0091   hello-world   "/hello"   3 minutes ago    Exited (0) About a minute ago             peaceful_heisenberg
208cd2d82d54   busybox       "sh"       7 minutes ago    Created                                   nice_johnson
2130b9be0781   hello-world   "/hello"   42 minutes ago   Exited (0) 5 minutes ago                  01
[root@localhost docker]# docker start -a ab5c34fe0091


//docker run
[root@localhost docker]# docker run -d nginx
79fa056c53acf7ec7ad65e15305cce31bae34a7a8436935702e5857e18f82cb5
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
79fa056c53ac   nginx     "/docker-entrypoint.…"   8 seconds ago   Up 6 seconds   80/tcp    wizardly_rosalind


//docker attach
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
c21a83991531   nginx     "/docker-entrypoint.…"   7 seconds ago   Up 6 seconds   80/tcp    sharp_rosalind
[root@localhost docker]# docker attach c21a83991531

^C2021/12/01 03:59:27 [notice] 1#1: signal 2 (SIGINT) received, exiting
2021/12/01 03:59:27 [notice] 31#31: exiting
2021/12/01 03:59:27 [notice] 31#31: exit
2021/12/01 03:59:27 [notice] 1#1: signal 17 (SIGCHLD) received from 31
2021/12/01 03:59:27 [notice] 1#1: worker process 31 exited with code 0
2021/12/01 03:59:27 [notice] 1#1: exit
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                          PORTS     NAMES
c21a83991531   nginx     "/docker-entrypoint.…"   2 minutes ago   Exited (0) About a minute ago             sharp_rosalind
79fa056c53ac   nginx     "/docker-entrypoint.…"   5 minutes ago   Exited (0) 3 minutes ago                  wizardly_rosalind


//docker ps
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED              STATUS                      PORTS     NAMES
208cd2d82d54   busybox       "sh"       About a minute ago   Created                               nice_johnson
2130b9be0781   hello-world   "/hello"   37 minutes ago       Exited (0) 36 minutes ago             01


//docker logs
[root@localhost docker]# docker logs 79fa056c53ac
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/12/01 03:55:26 [notice] 1#1: using the "epoll" event method
2021/12/01 03:55:26 [notice] 1#1: nginx/1.21.4
2021/12/01 03:55:26 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2021/12/01 03:55:26 [notice] 1#1: OS: Linux 4.18.0-257.el8.x86_64
2021/12/01 03:55:26 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2021/12/01 03:55:26 [notice] 1#1: start worker processes
2021/12/01 03:55:26 [notice] 1#1: start worker process 31


//docker restart
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS     NAMES
79fa056c53ac   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp    wizardly_rosalind
[root@localhost docker]# docker restart 79fa056c53ac
79fa056c53ac
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS         PORTS     NAMES
79fa056c53ac   nginx     "/docker-entrypoint.…"   About a minute ago   Up 3 seconds   80/tcp    wizardly_rosalind


//docker stop
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS         PORTS     NAMES
79fa056c53ac   nginx     "/docker-entrypoint.…"   About a minute ago   Up 3 seconds   80/tcp    wizardly_rosalind
[root@localhost docker]# docker stop 79fa056c53ac
79fa056c53ac
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES


//docker kill
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS              PORTS     NAMES
c21a83991531   nginx     "/docker-entrypoint.…"   5 minutes ago   Up About a minute   80/tcp    sharp_rosalind
[root@localhost docker]# docker kill c21a83991531
c21a83991531
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES


//docker rm
[root@localhost ~]# docker ps -a
2130b9be0781   hello-world   "/hello"          53 minutes ago   Exited (0) 16 minutes ago             01
[root@localhost ~]# docker rm 2130b9be0781
2130b9be0781
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

//docker exec
[root@localhost docker]# docker exec -it c21a83991531 /bin/bash
root@c21a83991531:/# 
root@c21a83991531:/# 
root@c21a83991531:/# ls
bin   dev                  docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc                   lib   media  opt  root  sbin  sys  usr
root@c21a83991531:/# exit
exit
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS              PORTS     NAMES
c21a83991531   nginx     "/docker-entrypoint.…"   5 minutes ago   Up About a minute   80/tcp    sharp_rosalind


//docker info
[root@localhost ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.3-docker)
  scan: Docker Scan (Docker Inc., v0.9.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 3
 Server Version: 20.10.11
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc version: v1.0.2-0-g52b36a2
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.18.0-257.el8.x86_64
 Operating System: CentOS Stream 8
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 1.748GiB
 Name: localhost.localdomain
 ID: FBFL:IIU6:3XZB:2IJX:2HVB:O4U6:RP6T:JPIE:CCF6:LB4B:GCWL:XAVP
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://uemehekj.mirror.aliyuncs.com/
 Live Restore Enabled: false



//docker inspect
[root@localhost docker]# docker inspect nginx
[
    {
        "Id": "sha256:ea335eea17ab984571cd4a3bcf90a0413773b559c75ef4cda07d0ce952b00291",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:097c3a0913d7e3a5b01b6c685a60c03632fc7a2b50bc8e35bcaa3691d788226e"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2021-11-17T10:38:14.652464384Z",
        "Container": "8a038ff17987cf87d4b7d7e2c80cb83bd2474d66e2dd0719e2b4f7de2ad6d853",
        "ContainerConfig": {
            "Hostname": "8a038ff17987",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.21.4",
                "NJS_VERSION=0.7.0",
                "PKG_RELEASE=1~bullseye"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"nginx\" \"-g\" \"daemon off;\"]"
            ],
            "Image": "sha256:2fb4060b053a39040c51ff7eadd30325de2c76650fc50aa42839070e16e8bdcb",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "DockerVersion": "20.10.7",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.21.4",
                "NJS_VERSION=0.7.0",
                "PKG_RELEASE=1~bullseye"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "Image": "sha256:2fb4060b053a39040c51ff7eadd30325de2c76650fc50aa42839070e16e8bdcb",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 141490847,
        "VirtualSize": 141490847,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/bee0eca4b2336e26fe70c381b03f63d121c93a406e07bda80249d42ad8455449/diff:/var/lib/docker/overlay2/d6d7708e96398b6ccff1f73f0caee0467ba100526854df0cae71e7f94494b7bf/diff:/var/lib/docker/overlay2/84b4a0f032997a281911dbb9b062be2d4b36eb3fb3a1e37dc2ab8e2349dd0e25/diff:/var/lib/docker/overlay2/4363c7b05cd54e2d37d8f3f474fbb8bbb11e62dbc276d81135c81d158bdcec8f/diff:/var/lib/docker/overlay2/2278bed5787b931b3fadfc705d2db17f59b75a224389e3d5f4506dcf93f54651/diff",
                "MergedDir": "/var/lib/docker/overlay2/012c8f89d4f0bf77bf1d6cb6c62bf24a3d126810ba92cffd81d2e8de6a9544b8/merged",
                "UpperDir": "/var/lib/docker/overlay2/012c8f89d4f0bf77bf1d6cb6c62bf24a3d126810ba92cffd81d2e8de6a9544b8/diff",
                "WorkDir": "/var/lib/docker/overlay2/012c8f89d4f0bf77bf1d6cb6c62bf24a3d126810ba92cffd81d2e8de6a9544b8/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:e1bbcf243d0e7387fbfe5116a485426f90d3ddeb0b1738dca4e3502b6743b325",
                "sha256:37380c5830feb5d6829188be41a4ea0654eb5c4632f03ef093ecc182acf40e8a",
                "sha256:ff4c727794302b5a0ee4dadfaac8d1233950ce9a07d76eb3b498efa70b7517e4",
                "sha256:49eeddd2150fbd14433ec1f01dbf6b23ea6cf581a50635554826ad93ce040b68",
                "sha256:1e8ad06c81b6baf629988756d90fd27c14285da4d9bf57179570febddc492087",
                "sha256:8525cde30b227bb5b03deb41bda41deb85d740b834be61a69ead59d840f07c13"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

docker event state

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值