docker实践

一、导出和载入镜像   

  使用docker save命令可以导出镜像到本地文件:

$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 c4ff7513909d 5 weeks ago 225.4 MB
...
$sudo docker save -o ubuntu_14.04.tar ubuntu:14.04

    使用docker load 可以将导出的本地文件载入到本地镜像库

[root@kwephicprc03547 ~]# docker load --input euler-aarch64.tgz
  184a764bb580: Loading layer [==================================================>] 1.189 GB/1.189 GB
  Loaded image: euler:latest
[root@kwephicprc03547 ~]# docker load --input centos-aarch64.tgz
  db7d26604fad: Loading layer [==================================================>] 244.7 MB/244.7 MB
  Loaded image: centos/aarch64:latest
[root@kwephicprc03547 ~]# docker images
  REPOSITORY TAG IMAGE ID CREATED SIZE
  euler latest da5bac89d64d
40 hours ago 1.155 GB   centos/aarch64 latest b1b73535f567 13 months ago 236.3 MB

二、在docker中使用systemd

  Docker运行一个系统容器起来时,只是提供了特定的文件系统层和进程隔离,给人一种VM的感觉但却并不是VM,如果想要像在物理机那样使用systemctl start|status|stop来管理服务进程,然后你通常会看到:Failed to get D-Bus connection: Operation not permitted。

  出现该错误的原因:1、需要启动systemd进程;2、需要特权。

  因此需要一个可以使用systemd的容器时,可以用如下方式启动容器:

[root@kwephicprc03547 network-scripts]# docker images
  REPOSITORY TAG IMAGE ID CREATED SIZE
  euler latest da5bac89d64d 41 hours ago        1.155 GB
  centos/aarch64 latest b1b73535f567 13 months ago 236.3 MB
[root@kwephicprc03547 network-scripts]# docker run -tdi --privileged euler init
  WARNING: IPv4 forwarding is disabled. Networking will not work.
  a64e7a90d851da3c10277e7941c36b22102c131cdbfa0258562c2e4b61794a57

参数解读:

  1. -d:需要容器在后台以守护态形式运行,可添加-d实现;
  2. -t:让docker分配一个伪终端并绑定到容器的标准输入上;
  3. -i:让容器的标准输入保持打开。
  4. --privileged:Docker将拥有访问主机所有设备的权限,同时Docker也会在apparmor或者selinux做一些设置,使容器可以容易的访问那些运行在容器外部的设备。

三、配置阿里云镜像加速器

1、安装/升级Docker客户端

  推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

注意:其他注意事项在下面的注释中
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
# 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。
# yum list docker-ce-selinux- --showduplicates | sort -r
# sudo yum -y install docker-ce-selinux-[VERSION]

# 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2中的命令
# 经典网络:
# sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
# VPC网络:
# sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo

2、配置镜像加速器

  针对Docker客户端版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。

[root@kwephicprc03547 ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://nxwgbmaq.mirror.aliyuncs.com"]
> }
> EOF
{ "registry-mirrors": ["https://nxwgbmaq.mirror.aliyuncs.com"]}
[root@kwephicprc03547 ~]# sudo systemctl daemon-reload [root@kwephicprc03547 ~]# sudo systemctl restart docker

3、docker配置代理

  可以发现做了如上配置之后,依然无法查看和下载镜像。docker的代理与系统的代理不一致,需要另外配置。

  参考文档:https://docs.docker.com/config/daemon/systemd/

(1)创建配置文件:

mkdir  /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/http-porxy.conf

(2)http-proxy.con做如下配置:

[Service]
Environment="HTTP_PROXY=http://账号:密码@openproxy.aliyun.com:80/"
Environment="HTTPS_PROXY=http://账号:密码@openproxy.aliyun.com:80/"

(3)重启服务和docker

[root@kwephicprc03547 ~]# sudo systemctl daemon-reload
[root@kwephicprc03547 ~]# sudo systemctl restart docker

 

posted @ 2019-02-26 22:27  休耕  阅读(447)  评论(0编辑  收藏  举报