Notepad++Good Luck To You!

Docker安装及使用

系统要求

Docker CE支持64位版本CentOS7,并且要求内核版本不低于3.10。CentOS7满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2存储层驱动)无法使用,并且部分功能可能不太稳定。

卸载旧版本

旧版本的Docker称为docker或者docker-engine,使用以下命令卸载旧版本:

$sudoyumremovedocker\

docker-client\

docker-client-latest\

docker-common\

docker-latest\

docker-latest-logrotate\

docker-logrotate\

docker-selinux\

docker-engine-selinux\

docker-engine

使用yum安装

执行以下命令安装依赖包:

$sudo yuminstall -yyum-utils device-mapper-persistent-datalvm2

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

执行下面的命令添加  yum 软件源:

CentOS

$ sudo yum-config-manager--add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

# $ sudoyum-config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo

如果需要最新版本的DockerCE请使用以下命令:

$sudo yum-config-manager--enabledocker-ce-edge

如果需要测试版本的Docker CE 请使用以下命令:

$ sudo yum-config-manager --enable docker-ce-test

安装 Docker CE

更新 yum  软件源缓存,并安装    docker-ce 。

$sudo yum makecache fast

$sudo yum install docker-ce

使用脚本自动安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS

系统上可以使用这套脚本安装:

$ curl -fsSL get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh --mirror Aliyun

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的 Edge 版本安装在系统中。

启动 Docker CE

$sudo systemctl enable docker

$sudo systemctl start docker

建立 docker 用户组

默认情况下,   docker  命令会使用 Unix socket 与 Docker 引擎通讯。而只有    root  用户和docker  组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用    root  用户。因此,更好地做法是将需要使用docker  的用户加入   docker用户组。

建立docker  组:

$ sudo groupadd docker

将当前用户加入docker  组:

$ sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

测试 Docker 是否安装正确

$docker run hello-world


添加内核参数

默认配置下,如果在CentOS使用DockerCE看到下面的这些警告信息:

WARNING:bridge-nf-call-iptablesisdisabled

WARNING:bridge-nf-call-ip6tablesisdisabled

请添加内核配置参数以启用这些功能。

$sudo tee -a /etc/sysctl.conf <<-EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables= 1

EOF

然后重新加载  sysctl.conf 即可

$sudo sysctl -p


对于使用systemd的系统,请在 /etc/docker/daemon.json中写入如下内容(如果文件不存在请新建该文件)

{

"registry-mirrors":[

"https://registry.docker-cn.com"

]

}

注意,一定要保证该文件符合json规范,否则Docker将不能启动。

之后重新启动服务。

$sudo systemctl daemon-reload

$sudo systemctl restartdocker


检查加速器是否生效

配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 

$dockerinfo

如果从结果中看到了如下内容,说明配置成功。

RegistryMirrors:

https://registry.docker-cn.com/


获取ubuntu:16.04镜像

$docker pull ubuntu:16.04

$dockerrun-it--rm ubuntu:16.04bash  //运行ubuntu16.04 的bash控制台,使用--rm参数表示退出容器后删除容器


简要的说明一下上面用到的参数。

-it:这是两个参数,一个是 -i:交互式操作,一个是-t终端。我们这里打算进入

bash执行一些命令并查看返回结果,因此我们需要交互式终端。

--rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm可以避免浪费空间。

ubuntu:16.04:这是指用 ubuntu:16.04镜像为基础来启动容器。

bash:放在镜像名后的是命令,这里我们希望有个交互式Shell,因此用的是 bash。

进入容器后,我们可以在Shell下操作,执行任何所需的命令。这里,我们执行了

 cat /etc/os-release,这是Linux常用的查看当前系统版本的命令,从返回的结果可以看到容器内是Ubuntu 16.04.4LTS 系统。

最后我们通过 exit退出了这个容器。

要想列出已经下载下来的镜像,可以使用

$docker image ls

$docker system df  //查看镜像容器占用空间


为了加速镜像构建、重复利用资源,Docker会利用中间层镜像。所以在使用一段时间后,可能会看到一些依赖的中间层镜像。默认的$docker image ls 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a参数。

$docker image ls -a

$docker image ls ubuntu //按仓库名列出镜像

$docker image ls ubuntu:16.04 //指定仓库和标签列出镜像

$docker image ls -f since=mongo:3.2 //在mongo:3.2之后建立的镜像 since换成为before则是在之前建立的镜像。


$docker image ls -q 列出ID列表

$docker image ls --format "{{.ID}}: {{.repository}}" //按id和仓库名格式输出列表

$docker image ls --format "table {{.ID}}:\t{{.repository}}\t{{.Tag}}" //用表格等距格式输入列表


删除本地镜像

$docker image rm {镜像短ID,长ID,镜像名,镜像摘要} //短id在长id基础上取得前3个字符以上

$docker image rm centos //按镜像名删除

与docker image ls 配合删除镜像

$docker image rm $(docker image ls -q redis) //删除所有仓库名为redis的镜像

$docker image rm $(docker image ls -q -f before=mongo:3.2)


定制nginx网页服务镜像

$docker run --name webserver -d -p 80:80 nginx

$docker exec -it webserver bash //切入该镜像bash命令行


镜像提交时修改作者和仓库标签为v2

$docker commit --author "作者" --message "注释" webserver nginx:v2


查看镜像内的历史记录

$docker history nginx:v2


运行新的镜像

$docker run --name web2 -d -p 81:80 nginx:v2


使用dockerfile来定制镜像

$mkdir nginx

$cd nginx

$vi Dockerfile

From nginx

RUN echo 'hello docker!'  >/usr/share/nginx/html/index.html

然后在dockerfile所在目录执行

$docker build -t nginx:v3

在本例中 可书写为以下方式,这样只需要构建一层容器,节省空间

FROM debian:jessie

RUN buildDeps='gcc libc6-dev make' \

&& apt-get update \

&& apt-get install -y $buildDeps \

&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \

&& mkdir -p /usr/src/redis \

&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \

&& make -C /usr/src/redis \

&& make -C /usr/src/redis install \

&& rm -rf /var/lib/apt/lists/* \

&& rm redis.tar.gz \

&& rm -r /usr/src/redis \

&& apt-get purge -y --auto-remove $buildDeps


«    2023年7月    »
12
3456789
10111213141516
17181920212223
24252627282930
31
TOP 搜索
TOP 控制面板
您好,欢迎到访网站!
  查看权限
TOP 最新留言
    TOP 作者列表
    TOP 站点信息
    • 文章总数:163
    • 页面总数:0
    • 分类总数:6
    • 标签总数:20
    • 评论总数:0
    • 浏览总数:312004
    召唤伊斯特瓦尔