接触Docker时间不长,折腾不少。实际上Docker还是蛮简单的,基于Go开发,容器化资源。
第一次创建镜像过程中遇到些问题,我在这里记录,希望能帮助到别人和自己。
国内如何加速拉取Docker镜像
通过 Docker 镜像加速,国内能够快速访问最流行的 Docker 镜像。国内用户现在将会享受到更快的下载速度和更强的稳定性,从而能够更敏捷地开发和交付 Docker 化应用。
- Docker官方提供的加速器
- DaoClund提供的加速器,需注册
- Aliyun 提供的加速器,需注册,适合在阿里云购买的服务器使用。
Docker-runc not installed on system
CentOS通过命令安装Docker时,并没有安装完整。一般在重新安装Docker后出现该问题。 只运行某镜像时,出现如下错误信息:
|
|
咋回事?原本好好的怎么就出问题了?原来是命令卸载Docker并没有卸载干净,导致重装或更新Docker后出问题。
这个在红帽上有一个Issue:https://access.redhat.com/solutions/2876431 有说明此问题,暂时只能是新建一个link到最终版本:
|
|
Jenkins: Can’t connect to Docker daemon
当Jenkins的Pipeline基于Docker运行时,提示此错误信息:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
这是因为CentOS安装Docker时使用的独立的用户组Docker,而Jenkins运行也是独立的用户Jenkins,需要将Jenkins用户添加到Docker的用户组中:
|
|
再重启Docker服务
|
|
最后重启Jenkins
|
|
Done!
Docker: 如何将本地文件载入Docker容器中
运行Docker镜像时,是支持参数配置的。参数-v
是表示映射本地目录到Docker容器中。
|
|
例如:
|
|
再启动容器时设置挂载:
|
|
表示什么意思呢?即将本地的目录target, 在Docker容器内部访问/go/src/github.com/ysqi/com,实际上就是在访问本机目录:$HOME/goproject/ysqi/com。
Docker实际上做了一个 volume 映射,就想VM上添加了一个映射盘。那如何把当前目录映射到Docker容器的指定位置?
|
|
这样就把本地的当前目录,映射到了/go/src/pkg 目录。
Docker: 如何在主机和容器间拷贝文件
上面所说得中使用-v 参数将主机与容器中相关目录联系在一起(挂载),所以我们可以用这个通道将想要互相拷贝的数据放入其中,这样就可以用 cp 命令来复制文件了。
除了这个办法,我们还可以分别用不同的命令来拷贝数据。
先docker cp -h
查看命令使用
|
|
以Nginx为例:先运行Nginx容器:
|
|
本机测试Nginx访问:curl http://localhost:8080
,正常。
再从主机拷贝文件到容器:
|
|
此时将主机当前目录下的 test 文件夹全部拷贝到容器内部的 /usr/share/nginx/html目录下。
反之,则可将文件或文件夹从容器内部拷贝到主机指定目录:
|
|
此时,便将容器内部的nginx默认配置文件拷贝的主机的当前目录下。