docker的安装配置及核心基础要点
参考:
- Mac安装卸载Docker
- 删除docker脚本:https://raw.githubusercontent.com/docker/toolbox/master/osx/uninstall.sh
- https://therealmarv.com/how-to-fully-uninstall-the-offical-docker-os-x-installation/
- Docker — 从入门到实践:https://docker_practice.gitee.io/zh-cn/
初始用户环境
添加用户并创建其家目录
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.