序:

  Docker的出现为测试人员带来了很大便利,从此再也不用为测试环境搭建一次次的费心费力,可以专心日站了!

  之前断断续续装了、忘了好几次,时间一长不用就忘了。这次重新找回Docker,特此将流程记录下来,方便以后查阅,也给小伙伴们提供一下参考!

  内容基础,大佬请绕路!

 

1、Docker简介

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

                       ------来自百度百科

2、安装前准备

(1)卸载Docker旧版本

$ sudo apt-get remove docker docker-engine docker.io containerd runc

(2)配置Ubuntu国内镜像源

默认镜像源在国外,国内用户下载速度较慢,故可选择国内镜像源如阿里、网易、清华、中科大等,以阿里源为例:

编辑/etc/apt/sources.list文件,插入以下内容(准备备份原文件):

$ sudo vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

(3)更新镜像源索引:

$ sudo apt-get update

(4)更新软件库:

$ sudo apt-get upgrade

(5)安装 apt 依赖包,用于通过HTTPS来获取仓库:

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

3、安装步骤

(1)添加Docker官方GPG key并验证

$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
$ sudo apt-key fingerprint 0EBFCD88

(2)设置稳定版仓库,用于下载更新Docker

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

(3)再次更新镜像源索引

$ sudo apt-get update

(4)安装最新版Docker CE(社区版)

$ sudo apt-get install docker-ce

(5)启动Docker

$ sudo service docker start

(6)查看Docker运行状态

$ sudo service docker status

(7)注册Docker 仓库账户ID

网址:https://hub.docker.com/

(8)登陆Docker

$ sudo docker login -u 用户名 -p 密码

(9)验证Docker是否正常运行

$ sudo docker run hello-world

运行结果如下图所示,证明Docker安装成功,运行正常。

Ubuntu18 docker 安装 ubuntu18.04安装docker_Ubuntu18 docker 安装

10)配置国内Docker仓库(填入以下内容)

sudo vim /etc/docker/daemon.json
{   "registry-mirrors": ["<your accelerate address>"] }

供选择仓库:

Docker官方中国区镜像 https://registry.docker-cn.com

网易163 docker镜像 http://hub-mirror.c.163.com

ustc的镜像 https://docker.mirrors.ustc.edu.cn

阿里、daocloud需要注册,请自行查找。

(11)重启Docker

$ sudo service docker restart

(12)为普通用户添加docker启动权限

$ sudo usermod -a -G docker $USER

4、常用命令

(1)显示 Docker 系统信息,包括镜像和容器数。

$ sudo docker info

(2)从 Docker Hub 中搜索符合条件的镜像。

docker search

docker search [options "o">] term

docker search -s django

--automated 只列出 automated build类型的镜像;

--no-trunc 可显示完整的镜像描述;

-s 40 列出收藏数不小于40的镜像。

(3)从 Docker Hub 中拉取或者更新指定镜像。

docker pull

docker pull [-a "o">] [user/ "o">]name[:tag "o">]

docker pull laozhu/telescope:latest

-a 拉取所有 tagged 镜像 。

(4)将镜像推送至远程仓库,默认为 Docker Hub 。

docker push

docker push name[:tag "o">]

docker push laozhu/nginx:latest

(5)列出本地所有镜像。其中 [name] 对镜像名称进行关键词查询。

docker images

docker images [options "o">] [name]

-a 列出所有镜像(含过程镜像);

-f 过滤镜像,如: -f ['dangling=true'] 只列出满足dangling=true 条件的镜像;

--no-trunc 可显示完整的镜像ID;

-q 仅列出镜像ID。

--tree 以树状结构列出镜像的所有提交历史。

(6)列出所有运行中容器。

docker ps

-a 列出所有容器(含沉睡镜像);

--before="nginx" 列出在某一容器之前创建的容器,接受容器名称和ID作为参数;

--since="nginx" 列出在某一容器之后创建的容器,接受容器名称和ID作为参数;

-f [exited=] 列出满足exited= 条件的容器;

-l 仅列出最新创建的一个容器;

--no-trunc 显示完整的容器ID;

-n=4 列出最近创建的4个容器;

-q 仅列出容器ID;

-s 显示容器大小。

(7)从本地移除一个或多个指定的镜像。

docker rmi

docker rmi [options "o">]   "o">[image...]

docker rmi nginx:latest postgres:latest python:latest

-f 强行移除该镜像,即使其正被使用;

--no-prune 不移除该镜像的过程镜像,默认移除。

(8)移除容器

docker rm

docker rm [options "o">]   "o">[container...]

docker rm nginx-01 nginx-02 db-01 db-02

sudo docker rm -l /webapp/redis

-f 强行移除该容器,即使其正在运行;

-l 移除容器间的网络连接,而非容器本身;

-v 移除与容器关联的空间。

(9)查看指定镜像的创建历史。

docker history

docker history  "o">[options]

--no-trunc 显示完整的提交记录;

-q 仅列出提交记录ID。

(10)启动、停止和重启一个或多个指定容器。

docker start|stop|restart

docker start|stop "p">|restart [options "o">]   "o">[container...]

-i 启动一个容器并进入交互模式;

-t 10 停止或者重启容器的超时时间(秒),超时后系统将杀死进程。

(11)获取容器运行时的输出日志。

docker logs

docker logs [options "o">]

docker logs -f -t --tail= "s2">"10" insane_babbage

-f 跟踪容器日志的最近更新;

-t 显示容器日志的时间戳;

--tail="10" 仅列出最新10条容器日志。

(12)启动一个容器,在其中运行指定命令。

docker run

docker run [options "o">]  [ "nb">command]  "o">[arg...]

-a stdin 指定标准输入输出内容类型,可选 STDIN/STDOUT / STDERR 三项;

-d 后台运行容器,并返回容器ID;

-i 以交互模式运行容器,通常与 -t 同时使用;

-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb" 为容器指定一个名称;

-p 80:80 将容器端口映射到特定主机;

--dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;

-h "mars" 指定容器的hostname;

-e username="ritchie" 设置环境变量;

--env-file=[] 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2" 绑定容器到指定CPU运行;

--net="bridge" 指定容器的网络连接类型,支持 bridge /host / none/container四种类型;

(13)重新构建镜像并生成容器并后台启动

docker-compose up -d

(14) 进行Docker容器执行交互式操作命令

attach 命令(从这个 stdin 中 exit,会导致容器停止):

docker attach (CONTAINER ID)

exec 命令(从这个 stdin 中 exit,不会导致容器的停止):

docker exec -it (CONTAINER ID) /bin/bash

5、常见错误

pull镜像不存在

pull access denied for ubantu, repository does not exist or may require 'docker login'

(2)仓库网络不通,检查网络配置是否有问题,网络没问题时考虑更换仓库

Get https://registry-1.docker.io/v2/: net/http: request canceled

(3)一般由于 /etc/docker/daemon.json 文件配置错误造成。

Job for docker.service failed because the control process exited with error

6、学习参考网站

https://docs.docker.com/

https://www.runoob.com/docker/docker-tutorial.html

https://hub.docker.com/

https://vulhub.org/#/index/

http://vulapps.evalbug.com/

7、介绍语

  Ubuntu18.04环境下Docker安装配置到这里就结束了,而战斗才刚刚开始,利用好Docker,测试复现将事半功倍!

  加油吧,少年!

 

此致

    敬礼!