目录
1.什么是docker
docker中的容器:
lxc --> libcontainer --> runC
2.OCI&OCF
2.1OCI
Open Container-initiative
由Linux基金会主导于2015年6月创立
旨在围绕容器格式和运行时制定一个开放的工业化标准
contains two specifications
- the Runtime Specification(runtime-spec)
- the Image Specification(image-spec)
2.2OCF
Open Container Format
runC is a CLI tool for spawning and running containers according to the OCI specification
- Containers are started as a child process of runC and can be embedded into various other systems without having to run a daemon
- runC is built on libcontainer, the same container technology powering millions of Docker Engine installations
docker提供了一个专门容纳容器镜像的站点:https://hub.docker.com
3.docker架构
4.docker镜像与镜像仓库
为什么镜像仓库名字是Registry而不是repository?在docker中仓库的名字是以应用的名称取名的。
镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的。
5.docker对象
当您使用docker时,您正在创建和使用镜像、容器、网络、卷、插件和其他对象。
- IMAGES
- 镜像是一个只读模板,上面有创建docker容器的说明。
- 通常,镜像是基于另一个镜像,并有一些额外的定制。
- 您可以创建自己的镜像,或者只使用其他人创建并发布在仓库中的镜像。
- CONTAINERS
- 容器是镜像的可运行实例。
- 您可以使用dockerAPI或CLI创建、运行、停止、移动或删除容器。
- 您可以将容器连接到一个或多个网络,将存储附加到它,甚至根据其当前状态创建新镜像。
6.安装及使用docker
[root@192 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@192 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@192 ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo docker-ce.repo
[root@192 ~]# yum makecache fast
[root@192 ~]# yum -y install docker-ce
[root@192 ~]# systemctl enable --now docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@192 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2020-03-31 09:30:06 CST; 26s ago
Docs: https://docs.docker.com
Main PID: 2813 (dockerd)
Tasks: 8
Memory: 42.1M
CGroup: /system.slice/docker.service
└─2813 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
//安装校验
[root@192 ~]# docker version
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:27:04 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:25:42 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
7.docker加速
用阿里云加速器步骤:
登录阿里云官网https://www.aliyun.com/
创建一个阿里云账号
[root@192 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://k94psehn.mirror.aliyuncs.com"]
}
[root@192 ~]# systemctl daemon-reload
[root@192 ~]# systemctl restart docker
8.docker常用操作
命令 | 功能 |
---|---|
docker search | 在Docker Hub中搜索镜像 |
docker pull | 从仓库中提取镜像或存储库 |
docker images | 列出镜像 |
docker create | 创建一个新的容器 |
docker start | 启动一个或多个已停止的容器 |
docker run | 在新容器中运行命令 |
docker attach | 附加到运行容器 |
docker ps | 列出容器 |
docker logs | 提取容器的日志 |
docker restart | 重新启动容器 |
docker stop | 停止一个或多个运行中的容器 |
docker kill | 杀死一个或多个正在运行的容器 |
docker rm | 删除一个或更多的容器 |
docker exec | 在正在运行的容器中运行命令 |
docker info | 显示系统范围的信息 |
docker inspect | 返回有关Docker对象的低级信息 |
//在Docker Hub中搜索镜像
[root@192 ~]# docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 2680 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 76 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 53
//从仓库中提取镜像或存储库
[root@192 ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
50e431f79093: Pull complete
dd8c6d374ea5: Pull complete
c85513200d84: Pull complete
55769680e827: Pull complete
e27ce2095ec2: Pull complete
5943eea6cb7c: Pull complete
3ed8ceae72a6: Pull complete
91d1e510d72b: Pull complete
415cc4506e71: Pull complete
a79d88064227: Pull complete
Digest: sha256:b707d3b8b4f40951ca2f387c24ab9f78800c69c90740f0cca937a1b95204b3a4
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
//列出镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest a7fa4ac97be4 13 days ago 528MB
//显示系统范围的信息
[root@192 ~]# docker info
Client:
Debug Mode: false
Server:
Containers: 2
Running: 0
Paused: 0
Stopped: 2
Images: 1
Server Version: 19.03.8
Storage Driver: overlay2
Backing Filesystem: <unknown>
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
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: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-862.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.779GiB
Name: 192.168.249.131
ID: VM7H:N3DL:QYCN:EFWA:IBPN:3CBO:F2GY:UN3P:33GB:DGDW:PKQP:NBPW
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://k94psehn.mirror.aliyuncs.com/
Live Restore Enabled: false
//创建一个新的容器
[root@192 ~]# docker create -it tomcat /bin/bash
4fa4d1a800d2a8a0a2600409e12c78acf626008c54ce3bcd3e58652ad52cac21
//启动一个或多个已停止的容器
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4fa4d1a800d2 tomcat "/bin/bash" 59 seconds ago Created mystifying_rosalind
fdea496cc2f5 tomcat "/bin/bash" 13 minutes ago Exited (0) 11 minutes ago upbeat_hamilton
798adb9f3186 tomcat "/bin/bash" 19 minutes ago Exited (0) 17 minutes ago sleepy_neumann
[root@192 ~]# docker start 4fa4d1a800d2
4fa4d1a800d2
//列出容器
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4fa4d1a800d2 tomcat "/bin/bash" 59 seconds ago Created mystifying_rosalind
fdea496cc2f5 tomcat "/bin/bash" 13 minutes ago Exited (0) 11 minutes ago upbeat_hamilton
798adb9f3186 tomcat "/bin/bash" 19 minutes ago Exited (0) 17 minutes ago sleepy_neumann
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4fa4d1a800d2 tomcat "/bin/bash" 4 minutes ago Up 7 seconds 8080/tcp mystifying_rosalind
//在新容器中运行命令
[root@192 ~]# docker run -it nginx /bin/bash
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
68ced04f60ab: Pull complete
28252775b295: Pull complete
a616aa3b0bf2: Pull complete
Digest: sha256:5dc91f5ad4941e09860f02fce957718093419a13fe9cc53db65a658cb6e6eaf5
Status: Downloaded newer image for nginx:latest
root@dcccf0f24f7e:/#
[root@192 ~]# docker run -d nginx
90c020105f038a736e377cb0798bd12c95634aa5dc1c9ae96d146d279b0543bf
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90c020105f03 nginx "nginx -g 'daemon of…" 49 seconds ago Up 48 seconds 80/tcp confident_feistel
//重新启动容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90c020105f03 nginx "nginx -g 'daemon of…" 17 minutes ago Up 17 minutes 80/tcp confident_feistel
[root@192 ~]# docker restart 90c020105f03
90c020105f03
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90c020105f03 nginx "nginx -g 'daemon of…" 17 minutes ago Up 4 seconds 80/tcp confident_feistel
//停止一个或多个运行中的容器
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90c020105f03 nginx "nginx -g 'daemon of…" 17 minutes ago Up 4 seconds 80/tcp confident_feistel
[root@192 ~]#
[root@192 ~]# docker stop 90c020105f03
90c020105f03
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
//杀死一个或多个正在运行的容器
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90c020105f03 nginx "nginx -g 'daemon of…" 21 minutes ago Up 16 seconds 80/tcp confident_feistel
[root@192 ~]# docker kill 90c020105f03
90c020105f03
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
//删除一个或更多的容器
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90c020105f03 nginx "nginx -g 'daemon of…" 23 minutes ago Exited (137) About a minute ago confident_feistel
dcccf0f24f7e nginx "/bin/bash" 27 minutes ago Exited (0) 25 minutes ago jolly_moore
4fa4d1a800d2 tomcat "/bin/bash" 48 minutes ago Exited (255) 29 minutes ago 8080/tcp mystifying_rosalind
fdea496cc2f5 tomcat "/bin/bash" About an hour ago Exited (0) 59 minutes ago upbeat_hamilton
798adb9f3186 tomcat "/bin/bash" About an hour ago Exited (0) About an hour ago sleepy_neumann
[root@192 ~]# docker rm 798adb9f3186
798adb9f3186
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90c020105f03 nginx "nginx -g 'daemon of…" 24 minutes ago Exited (137) 2 minutes ago confident_feistel
dcccf0f24f7e nginx "/bin/bash" 28 minutes ago Exited (0) 26 minutes ago jolly_moore
4fa4d1a800d2 tomcat "/bin/bash" 49 minutes ago Exited (255) 29 minutes ago 8080/tcp mystifying_rosalind
fdea496cc2f5 tomcat "/bin/bash" About an hour ago Exited (0) About an hour ago upbeat_hamilton
//附加到运行容器
[root@192 ~]# docker run -it -d nginx /bin/bash
b73a949f6814db401f4c0c2516758771d00a36cae6fa2f612deab92714c532ac
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b73a949f6814 nginx "/bin/bash" 7 seconds ago Up 5 seconds 80/tcp quirky_murdock
[root@192 ~]# docker attach b73a949f6814
root@b73a949f6814:/# pwd
/
//在正在运行的容器中运行命令
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5c4aee2f928 nginx "/bin/bash" 44 seconds ago Up 43 seconds 80/tcp wonderful_tereshkova
[root@192 ~]# docker exec d5c4aee2f928 pwd
/