内容:
尚硅谷 Docker 入门视频:https://www.bilibili.com/video/av26993050
安装 Docker CE
多参考官方文档(Install Docker Engine),里面提供了各种 Linux 发行版的安装方式。
由于网络原因,使用官方镜像可能速度不够理想,可以使用阿里云提供的镜像进行安装,这里以 CentOS 7 为例,其他系统安装详见阿里云地址:https://developer.aliyun.com/mirror/docker-ce
运行如下,即可安装成功
1 2 3 4 5 6 7 8 9 10 11 12
| sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast sudo yum -y install docker-ce
sudo systemctl start docker
|
配置国内 Docker 仓库镜像
以阿里云镜像为例,打开 https://www.aliyun.com/product/acr 申请阿里云的容器镜像服务 (免费)
- 进入控制台,选择镜像加速器
- 按照操作文档操作
附 CentOS 7 / Ubuntu 的操作命令
1 2 3 4 5 6 7 8
| sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
|
安装完成后运行: docker run hello-world
,出现如下内容即安装运行成功。
常用命令
可参考官方文档:
镜像命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| docker --help -h
docker images [OPTION] -a: 列出本地所有的镜像(含中间映像层) -q: 只显示镜像 ID --digests: 显示镜像的摘要信息 --no-trunc: 显示镜像的完整信息
docker search -s: 列出收藏数不小于指定值的镜像 (docker search -s 30 xxx)
docker pull xxx[:TAG]
docker rmi xxx1[:TAG] xxx2[:TAG] docker rmi $(docker images -qa) -f: 强制删除
|
容器命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| docker run [OPTION] image [COMMAND] [ARG...] --name: 别名 -i: 以交互模式运行容器, 通常与 -t 同时使用 -t: 为容器重新分配一个伪输入终端, 通常与 -i 同时使用 -d: 后台运行容器, 并返回容器 ID, 也即启动守护式容器 -P: 随机端口映射 -p: 指定端口映射, 有以下四种格式 ip:hostPort:containerPort ip::containerPort hostPort:containerPort containerPort -v 宿主机绝对路径目录:/容器内目录(:ro 只读不可写): 添加容器数据卷
docker ps [OPTION] -a: 列出当前所有正在运行的容器 + 历史上运行过的 -l: 显示最近创建的容器 -n: 显示最近 n 个创建的容器 -q: 静默模式, 只显示容器编号 --no-trunc: 不截断输出
exit Ctrl + P + Q
docker start [容器名或容器ID]
docker restart [容器名或容器ID]
docker stop [容器名或容器ID]
docker kill [容器名或容器ID]
docker rm [容器名或容器ID] -f: 强制删除 docker rm -f $(docker ps -aq) docker ps -aq | xargs docker rm
docker logs [OPTION] [容器ID] -t: 加入时间戳 -f: 跟随最新的日志打印 --tail: 数字 显示最后多少条
docker top [容器ID]
docker inspect [容器ID]
docker exec -it [容器ID] COMMAND [ARG...] docker attach [容器ID]
docker cp 容器ID:容器内路径 本机路径
|
DockerFile
官方文档:Dockerfile reference
保留关键字:
- FROM:基础镜像,当前新镜像是基于哪个镜像的
- MAINTAINER:镜像维护者的姓名和邮箱
- RUN:容器构建时需要运行的命令
- EXPOSE:当前容器对外暴露出的端口
- WORKDIR:指定在创建容器后,终端默认登录进来工作目录
- ENV:用来构建镜像过程中设计环境变量
- ADD:将宿主机目录下的文件拷贝进镜像,且 ADD 命令会自动处理 URL 和解压 tar 压缩包
- COPY:类似 ADD,拷贝文件和目录到镜像中
- VOLUME:容器数据卷,用于数据保存和持久化工作
- CMD:指定一个容器启动时要运行的命令(可以有多个,但只有最后一个生效,CMD 会被
docker run
之后的参数替换)
- ENTRYPOINT:指定一个容器启动时要运行的命令(目的和 CMD 一样,都是在指定容器启动程序及参数)
- ONBUILD:当构建一个被继承的 Dockerfile 时运行命令,父镜像在被子继承后父镜像的 onbuild 被触发
开启 Docker 的远程控制
编辑 /usr/lib/systemd/system/docker.service
服务
/usr/lib/systemd/system/docker.service1 2 3 4 5 6 7 8
| [Service] Type=notify - ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock + ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always
|
添加 -H tcp://0.0.0.0:2375
表示监听本机所有 IP 的 2375 端口,也可指定特定的 IP,如 -H tcp://192.168.123.132:2375
重启服务以生效
1 2
| systemctl daemon-reload systemctl restart docker
|
其他开启方式见参考一
参考:
- Docker 官方文档 - Daemon socket option
- Docker 开启 Remote API 访问 2375 端口