docker的安装配置及核心基础要点

参考:

初始用户环境

添加用户并创建其家目录
useradd -m luowei

添加用户及家目录并指定使用bash
useradd -m -d /home/luowei/ -s /bin/bash -G sudo luowei

设置密码
passwd luowei

添加到sudo用户组
usermod -aG sudo luowei

查看用户组
groups luowei

删除用户连同家目录也一并删除
deluser --remove-home luowei

Docker安装配置

使用 APT 安装

$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

添加国内源,添加软件源的 GPG 密钥
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

向 source.list 中添加 Docker 软件源

$ sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

安装 Docker CE

$ sudo apt-get update
$ sudo apt-get install docker-ce

启动 Docker CE

$ sudo systemctl enable docker
$ sudo systemctl start docker

将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER

配置镜像加速器 在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com"
  ]
}

之后重新启动服务

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

获取Ubuntu镜像并运行
从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

具体的选项可以通过 docker pull –help 命令看到。

$ docker pull ubuntu:18.04
$ docker run -it --rm ubuntu:18.04 bash

列出镜像
docker image ls

镜像体积
docker system df

删除本地镜像
要删除本地的镜像,可以使用 docker image rm 命令,其格式为:
$ docker image rm [选项] <镜像1> [<镜像2> ...]

用 ID、镜像名、摘要删除镜像
其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要

更精确的是使用 镜像摘要 删除镜像。
$ docker image ls --digests

比如下面根据Id删除
$ docker image rm 501

用镜像名,也就是 <仓库名>:<标签>,来删除镜像 `$ docker image rm centos`

更精确的是使用 镜像摘要 删除镜像
$ docker image ls --digests

如果需要删除所有仓库名为 redis 的镜像: $ docker image rm $(docker image ls -q redis)

或者删除所有在 mongo:3.2 之前的镜像: $ docker image rm $(docker image ls -q -f before=mongo:3.2)

定制一个 Web 服务器为例子
$ docker run --name webserver -d -p 80:80 nginx

使用 docker exec命令进入容器,修改其内容

$ docker exec -it webserver bash
root@3729b97e8226:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
root@3729b97e8226:/# exit
exit

修改了容器的文件,也就是改动了容器的存储层。可以通过 docker diff 命令看到具体的改动 $ docker diff webserver

docker commit 保存容器的改动 docker commit 的语法格式为: docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

可以用下面的命令将容器保存为镜像: $ docker commit --author "luowei" --message "修改了默认网页" webserver nginx:v2

终止容器 docker container stop webserver

启动容器 docker container start webserver

重启容器 docker container restart webserver

从v2、v3镜像启动容器

$ docker run --name webserver_v2 -d -p 80:80 nginx:v2
$ docker run --name webserver_v3 -d -p 80:80 nginx:v3

让docker在后台运行

$  docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
e784987bf3520a7cd8e2fbded60d736555a5d9010dc35630ec02cbab6d0b0cda

要获取容器的输出信息,可以通过 docker container logs 命令:

$ docker container logs [container ID or NAMES]
$ docker logs e784987bf35	# 输出结果可以用 docker logs 查看

进入容器
使用exec命令
当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符
docker exec -it 69d1 bash

使用attach命令
进入后如果从 stdin 中 exit,会导致容器的停止

docker attach [容器Id]
docker attach 5aeb8 

导出容器 导出容器快照到本地文件

docker export [容器Id] > ubuntu.tar
docker export e784987bf > ubuntu.tar

导入容器快照
使用 docker import 从容器快照文件中再导入为镜像

$ cat ubuntu.tar | docker import - test/ubuntu:v1.0
$ docker image ls

也可以通过指定 URL 或者某个目录来导入,例如 $ docker import http://example.com/exampleimage.tgz example/imagerepo

注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库

删除容器
可以使用 docker container rm 来删除一个处于终止状态的容器。例如
$ docker container rm e78498

如果要删除一个运行中的容器,可以添加 -f 参数.

清理所有处于终止状态的容器
用 docker container ls -a 命令可以查看所有已经创建的包括终止状态的容器, 用下面的命令可以清理掉所有处于终止状态的容器。
$ docker container prune

私有仓库
安装运行 docker-registry docker run -d -p 6000:6000 -v /opt/data/registry:/var/lib/registry registry

使用 docker tag 将 ubuntu:latest 这个镜像标记为 127.0.0.1:5000/ubuntu:latest。 格式为 docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]。 $ docker tag ubuntu:latest 127.0.0.1:6000/ubuntu:latest

使用 docker push 上传标记的镜像。 $ docker push 127.0.0.1:6000/ubuntu:latest

Nexus3.x 的私有仓库 使用 Nexus3.x 一个软件来管理 Docker , Maven , Yum , PyPI 等是一个明智的选择.
启动 Nexus 容器

$ docker run -d --name nexus3 --restart=always \
    -p 8081:8081 \
    --mount src=nexus-data,target=/nexus-data \
    sonatype/nexus3

可以使用浏览器打开 http://YourIP:8081 访问 Nexus 了,第一次启动 Nexus 的默认帐号是 admin 密码是 admin123.

版权所有,转载请注明出处 luowei.github.io.