Docker 安装
安装依赖
Terminal
yum install -y yum-utils device-mapper-persistent-data lvm2添加 Docker yum 源
Terminal
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-
ce/linux/centos/docker-ce.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d'
/etc/yum.repos.d/CentOS-Base.repo安装 docker-ce
Terminal
yum install docker-ce-20.10.* docker-ce-cli-20.10.* -ydocker 自启动
Terminal
systemctl daemon-reload && systemctl enable --now dockerVersion & Info
查看 docker 版本
Terminal
docker versionOutput
Client: Docker Engine - Community
Version: 20.10.24
API version: 1.41
Go version: go1.19.7
Git commit: 297e128
Built: Tue Apr 4 18:22:57 2023
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.24
API version: 1.41 (minimum version 1.12)
Go version: go1.19.7
Git commit: 5d6db84
Built: Tue Apr 4 18:21:02 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0查看 Docker 详细信息
Terminal
docker infoOutput
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.10.4-docker)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.24
Storage Driver: overlay2 # 存储驱动,一般为 overlay2,性能好速度快,其他驱动 aufs、overlay、brtfs
Backing Filesystem: xfs # 服务器文件系统
Supports d_type: true # 目录条目类型,用来表示一个文件是文件、管道还是套接字。在格式化 xfs 文件系统时,必须指定 ftype=1
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file # 日志驱动,json-file 表示存在本地
Cgroup Driver: cgroupfs # 限制和隔离的驱动,生产环境建议使用 systemd
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 # Docker 支持的日志驱动
Swarm: inactive # Docker 官方的容器编排工具,inactive 不开启,active 开启
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 8165feabfdfe38c65b599c4993d227328c231fca
runc version: v1.1.8-0-g82f18fe
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.71.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 962.8MiB
Name: ip-192-168-0-243.cn-northwest-1.compute.internal
ID: 32R5:YIG4:Z3PG:2IVC:S5AE:LQGB:IATI:6YSO:TA33:54G5:OLNZ:KPAA
Docker Root Dir: /var/lib/docker # Docker 根目录,生产环境建议使用 SSD 硬盘,或者独立的磁盘,不要和系统盘用同一个磁盘。
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false # Docker 热更新,生产环境建议设置为 trueImage Operation
Search Image
Terminal
docker search nginxOutput
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 18977 [OK]
bitnami/nginx Bitnami nginx Docker Image 172 [OK]
nginxproxy/acme-companion Automated ACME SSL certificate generation fo… 123
nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 118
nginxproxy/nginx-proxy Automated Nginx reverse proxy for docker con… 102
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 98
nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers fo… 76
nginx/unit NGINX Unit is a dynamic web and application … 64
nginx/nginx-prometheus-exporter NGINX Prometheus Exporter for NGINX and NGIN… 33
bitnami/nginx-ingress-controller Bitnami Docker Image for NGINX Ingress Contr… 29 [OK]
nginxproxy/docker-gen Generate files from docker container meta-da… 12
rancher/nginx-ingress-controller 11
unit Official build of NGINX Unit: Universal Web … 10 [OK]
kasmweb/nginx An Nginx image based off nginx:alpine and in… 6
nginxinc/ingress-demo Ingress Demo 4
nginxinc/nginx-s3-gateway Authenticating and caching gateway based on … 2
rancher/nginx-ingress-controller-defaultbackend 2
nginx/nginx-quic-qns NGINX QUIC interop 1
nginxinc/amplify-agent NGINX Amplify Agent docker repository 1
nginxinc/nginmesh_proxy_debug 0
nginx/nginx-ingress-operator NGINX Ingress Operator for NGINX and NGINX P… 0
nginxinc/mra-fakes3 0
nginxinc/ngx-rust-tool 0
nginxinc/mra_python_base 0
nginxinc/nginmesh_proxy_init 0 Pull Image
Terminal
docker pull nginxTerminal
docker pull nginx:1.15List Image
Terminal
docker images | grep nginx-v2Re-tag
Terminal
docker tag nginx joachim/nginx:testTerminal
docker images | grep joachimLogin Registry
Terminal
docker loginPush Image
Terminal
docker push joachim/nginx:testDelete Images
Terminal
docker rmi 7ad745acca31 00f40cc9b7f6 9b0f2f308931 c3d2357e9cbd 97c97cee03f9Image History
Terminal
docker history 0e55626662efContainer Operation
Run Container
前台启动
Terminal
docker run -ti nginx bash后台启动 -d
Terminal
docker run -tid nginx bash自动重启
Terminal
docker run -tid --restart=always nginx bash Port Mapping
Terminal
docker run -ti -p 30001:80 nginx bashLog
Terminal
docker logs -f [containerID|containerName] --tail 1Volume Mount
Terminal
docker run -ti -p 30001:80 -v /etc/hosts:/etc/hosts nginxList Container
Running Container
Terminal
docker psALL (include QUIT)
Terminal
docker ps -aonly Container ID
Terminal
docker ps -qTerminal
docker ps -aqContainer Info
Terminal
docker inspect 1de2ef08945f Delete Container
Terminal
docker rm 600e5da5c196 5a1848d923a1 280fc86494f1Exec
Terminal
docker exec -ti 86b1c069024b bashDockerFile Operation
Build Image
Terminal
docker build -t image_name:image_tag .Keywords Index
| ITEM | CONTENT | Example |
|---|---|---|
| FROM | 继承基础镜像 | FROM centos:7 |
| MAINTAINER | 镜像制作作者的信息,已弃用,使用LABEL替代 | MAINTAINER dot |
| LABEL | k=v形式,将一些元数据添加至镜像 | LABEL maintainer="dot" version="demo" |
| ENV | 配置环境变量 | |
| USER | 容器使用的用户 | |
| WORKDIR | 设置容器的工作目录 | |
| ADD | 复制文件到容器,一般拷贝文件,压缩包自动解压 | |
| COPY | 复制文件到容器,一般拷贝目录 | |
| RUN | 用来执行shell命令 | RUN useradd dot |
| EXPOSE | 暴露端口号 | |
| CMD | 启动容器默认执行的命令,会被覆盖 | |
| ENTRYPOINT | 启动容器真正执行的命令,不会被覆盖 | |
| ARG | 设置编译镜像时传入的参数 |
Ex: create user
Dockerfile
FROM centos:7
MAINTAINER dot
RUN useradd dotTerminal
docker build -t centos:user .Switch User
Dockerfile
FROM centos:7
RUN useradd -m tomcat -u 1001
USER 1001Ex: Add ENV
Dockerfile
FROM centos:7
MAINTAINER dot
RUN useradd dot
RUN mkdir dot
ENV envir=test version=1.0
CMD echo "envir:$envir version:$version"Terminal
docker build -t centos:env-cmd .
docker run centos:env-cmdEx: Entrypoint
Dockerfile
FROM centos:7
MAINTAINER dot
RUN useradd dot
RUN mkdir dot
ENV envir=test version=1.0
ENTRYPOINT echo "envir:$envir version:$version"Terminal
docker build -t centos:entrypoint .
docker run --rm centos:entrypointCMD & ENTRYPOINT
覆盖 CMD:
Terminal
docker run --rm centos:env-cmd echo "cover..."覆盖 ENTRYPOINT (--entrypoint)
Terminal
docker run --rm --entrypoint=ls centos:entrypoint /tmpADD & COPY
ADD 自动解压
Dockerfile
FROM nginx
MAINTAINER dot
ADD ./index.tar.gz /usr/share/nginx/html/
WORKDIR /usr/share/nginx/htmlCOPY 不自动解压
Dockerfile
FROM nginx
MAINTAINER dot
WORKDIR /usr/share/nginx/html
COPY webroot/ .Dockerfile Dynamic Arguments
Dockerfile
FROM centos:7
LABEL maintainer="dot" version="demo"
LABEL multiple="true"
ARG USERNAME
ARG DIR="defaultValue"
RUN useradd -m $USERNAME -u 1001 && mkdir $DIRTerminal
docker build --build-arg USERNAME="test_arg" -t test:arg .Multi-Stage Build
Dockerfile
FROM golang:1.14.4-alpine as builder
WORKDIR /opt
COPY hello.go /opt
RUN go build /opt/hello.go
FROM scratch
COPY --from=builder /opt/hello .