一、Docker 常用命令
docker version 命令
[root@docker ~]# docker version
Client: Docker Engine - Community Version: 19.03.4 API version: 1.40 Go version: go1.12.10 Git commit: 9013bf583a Built: Fri Oct 18 15:52:22 2019 OS/Arch: linux/amd64 Experimental: false Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
可以看到 此处只有 Docker Client 的版本信息,同时显示 Cannot connect to the Docker daemon(Docker Server端)
那么将 Docker 服务启动起来,再次查看 Docker 版本:
[root@docker ~]# systemctl start docker
将 Docker 服务设置为开机自启动:
[root@docker ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
查看 Docker 版本:
[root@docker ~]# docker version
Client: Docker Engine - Community Version: 19.03.4 API version: 1.40 Go version: go1.12.10 Git commit: 9013bf583a Built: Fri Oct 18 15:52:22 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.4 API version: 1.40 (minimum version 1.12) Go version: go1.12.10 Git commit: 9013bf583a Built: Fri Oct 18 15:50:54 2019 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.10 GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339 runc: Version: 1.0.0-rc8+dev GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 docker-init: Version: 0.18.0 GitCommit: fec3683
docker info 命令
[root@docker ~]# docker info
Client: Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 19.03.4 Storage Driver: overlay2 Backing Filesystem: xfs 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: b34a5c8af56e510852c35414db4c1f4fa6172339 runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 3.10.0-957.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.777GiB Name: docker01 ID: IEX4:P4JT:FBHF:D3WZ:SY2U:SRHT:MXBN:U2RA:YFGI:V6U4:NJO6:KFFX 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 Live Restore Enabled: false
二、Docker 镜像管理
[root@docker ~]# docker image ( image 后加一个空格,再按2次 Tab键) build history import inspect load ls prune pull push rm save tag
搜索镜像: docker search 镜像名
[root@docker ~]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 12128 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1679 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 744 [OK] linuxserver/nginx An Nginx container, brought to you by LinuxS… 79 bitnami/nginx Bitnami nginx Docker Image 72 [OK] tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 58 [OK] nginxdemos/hello NGINX webserver that serves a simple page co… 31 [OK] jlesage/nginx-proxy-manager Docker container for Nginx Proxy Manager 27 [OK] jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 26 nginx/nginx-ingress NGINX Ingress Controller for Kubernetes 22 privatebin/nginx-fpm-alpine PrivateBin running on an Nginx, php-fpm & Al… 18 [OK] schmunk42/nginx-redirect A very simple container to redirect HTTP tra… 17 [OK] crunchgeek/nginx-pagespeed Nginx with PageSpeed + GEO IP + VTS + more_s… 14 blacklabelops/nginx Dockerized Nginx Reverse Proxy Server. 12 [OK]
选镜像的建议:
1. 优先考虑官方
2. stars 数量多
获取镜像:docker pull 镜像名
镜像加速器:阿里云加速器,daocloud加速器,中科大加速器,Docker中国官方镜像加速(https://registry.docker-cn.com)
docker pull centos:6.8 (没有指定版本,默认会下载最新版)
docker pull daocloud.io/huangzhichong/alpine-cn:latest
[root@docker ~]# docker pull nginx:1.16.0 1.16.0: Pulling from library/nginx 9fc222b64b0a: Pull complete 30e9fc7d9c5b: Pull complete 4b3a8aeaa40e: Pull complete Digest: sha256:3e373fd5b8d41baeddc24be311c5c6929425c04cabf893b874ac09b72a798010 Status: Downloaded newer image for nginx:1.16.0 docker.io/library/nginx:1.16.0
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.16.0 ae893c58d83f 2 months ago 109MB
查看镜像列表:docker images 或 docker image ls
查看已拉取下来的 Docker 镜像,有两种方法:
[root@docker ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.16.0 ae893c58d83f 2 months ago 109MB [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.16.0 ae893c58d83f 2 months ago 109MB
查看镜像的详细属性:docker image inspect 镜像名
[root@docker ~]# docker image inspect nginx:latest [ { "Id": "sha256:540a289bab6cb1bf880086a9b803cf0c4cefe38cbb5cdefa199b69614525199f", "RepoTags": [ "nginx:latest" ], "RepoDigests": [ "nginx@sha256:922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4" ], "Parent": "", "Comment": "", "Created": "2019-10-23T00:26:03.830480202Z", "Container": "77b8bfc5e16274066a5d4c14915ea5e7387c062f8540cd970c54e9b6e38b1011", "ContainerConfig": { "Hostname": "77b8bfc5e162", "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.17.5", "NJS_VERSION=0.3.6", "PKG_RELEASE=1~buster" ], "Cmd": [ "/bin/sh", "-c", "#(nop) ", "CMD ["nginx" "-g" "daemon off;"]" ], "ArgsEscaped": true, "Image": "sha256:2e2fa75c52fdfe182fb66455d6db04849c683ef01d14a526211ba37831c66791", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": { "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>" }, "StopSignal": "SIGTERM" }, "DockerVersion": "18.06.1-ce", "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.17.5", "NJS_VERSION=0.3.6", "PKG_RELEASE=1~buster" ], "Cmd": [ "nginx", "-g", "daemon off;" ], "ArgsEscaped": true, "Image": "sha256:2e2fa75c52fdfe182fb66455d6db04849c683ef01d14a526211ba37831c66791", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": { "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>" }, "StopSignal": "SIGTERM" }, "Architecture": "amd64", "Os": "linux", "Size": 126215561, "VirtualSize": 126215561, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/b866a45f1e1d110b17bbc0387832373b8605e9e171a583ea35f6f3c8e5440a9f/diff:/var/lib/docker/overlay2/0e300469a4c4e8faaca819a513171cb6ad27318c36f716b92ff1974bea68387c/diff", "MergedDir": "/var/lib/docker/overlay2/58d7b5c004af4f43a39914ca892293b441b2395305034408743a5e368826e9fc/merged", "UpperDir": "/var/lib/docker/overlay2/58d7b5c004af4f43a39914ca892293b441b2395305034408743a5e368826e9fc/diff", "WorkDir": "/var/lib/docker/overlay2/58d7b5c004af4f43a39914ca892293b441b2395305034408743a5e368826e9fc/work" }, "Name": "overlay2" }, "RootFS": { "Type": "layers", "Layers": [ "sha256:b67d19e65ef653823ed62a5835399c610a40e8205c16f839c5cc567954fcf594", "sha256:6eaad811af0237b78ba8b44a282d1564259d90007d628a032c5df7e3e2bbb613", "sha256:a89b8f05da3a2cbe459ef3fecfec8076fd0a7568db81f9164147b6f642e2dadf" ] }, "Metadata": { "LastTagTime": "0001-01-01T00:00:00Z" } } ]
删除镜像:docker rmi 或 docker image rm
例如:docker image rm centos:latest
[root@docker ~]# docker rmi nginx:1.16.0 Untagged: nginx:1.16.0 Untagged: nginx@sha256:3e373fd5b8d41baeddc24be311c5c6929425c04cabf893b874ac09b72a798010 Deleted: sha256:ae893c58d83fe2bd391fbec97f5576c9a34fea55b4ee9daf15feb9620b14b226 Deleted: sha256:9987b8be475d96bc466b978b64b54af9e556884e78007caa19c065c6723f40e4 Deleted: sha256:5d7e4cc1668a0ce9764e7dad91cfbe594eea3a5b3ac6f4ec229d549cac20fff0 Deleted: sha256:8fa655db5360a336ddd0256f573e27975628668063732ef91f820d4770db737c 或者 [root@docker ~]# docker image rm nginx:1.16.0 Untagged: nginx:1.16.0 Untagged: nginx@sha256:3e373fd5b8d41baeddc24be311c5c6929425c04cabf893b874ac09b72a798010 Deleted: sha256:ae893c58d83fe2bd391fbec97f5576c9a34fea55b4ee9daf15feb9620b14b226 Deleted: sha256:9987b8be475d96bc466b978b64b54af9e556884e78007caa19c065c6723f40e4 Deleted: sha256:5d7e4cc1668a0ce9764e7dad91cfbe594eea3a5b3ac6f4ec229d549cac20fff0 Deleted: sha256:8fa655db5360a336ddd0256f573e27975628668063732ef91f820d4770db737c
备注:docker ps -a 查看容器,删除镜像前应先删除掉容器 docker rm CONTAINS_ID
导出镜像:docker save
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 540a289bab6c 7 days ago 126MB nginx 1.16.0 ae893c58d83f 2 months ago 109MB daocloud.io/huangzhichong/alpine-cn latest e8289dcc1d4b 2 years ago 3.98MB [root@docker ~]# docker save daocloud.io/huangzhichong/alpine-cn:latest > docker_alpine-cn.tar.gz [root@docker ~]# ll total 132652 -rw-------. 1 root root 1549 Jan 10 2019 anaconda-ks.cfg -rw-r--r--. 1 root root 4241408 Oct 29 23:39 docker_alpine-cn.tar.gz
导入镜像:docker load
[root@docker ~]# docker load -i docker_alpine-cn.tar.gz 60ab55d3379d: Loading layer [===========================================>] 4.226MB/4.226MB 78cd8c87ab42: Loading layer [===========================================>] 3.072kB/3.072kB Loaded image: daocloud.io/huangzhichong/alpine-cn:latest
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 540a289bab6c 7 days ago 126MB nginx 1.16.0 ae893c58d83f 2 months ago 109MB daocloud.io/huangzhichong/alpine-cn latest e8289dcc1d4b 2 years ago 3.98MB
给镜像打标签:docker tag
docker tag 命令:标记本地镜像,将其归入某一仓库。
语法:
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
实例:
例如,Docker本地有一个 nginx 镜像:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 540a289bab6c 8 days ago 126MB
我们对 本地nginx镜像进行开发,开发了第一个版本,然后对该版本打标签,打完标签后会生成新的镜像:
(也有人称之为 “硬链接”)
[root@docker ~]# docker tag nginx nginx:v1 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 540a289bab6c 8 days ago 126MB nginx v1 540a289bab6c 8 days ago 126MB
我们继续对 本地nginx进项进行开发,开发了第二个版本,继续打标签
[root@docker ~]# docker tag nginx nginx:v2 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 540a289bab6c 8 days ago 126MB nginx v1 540a289bab6c 8 days ago 126MB nginx v2 540a289bab6c 8 days ago 126MB
以此类推,每开发一个版本打一个标签,如果以后想回滚版本,就可以使用指定标签的镜像来创建容器:
[root@docker ~]# docker run -itd nginx:v1