James 发表于 2018-5-29 08:27:06

2 docker模板 镜像 容器 仓库管理

镜像管理

搜索镜像
# docker search centos

    :开发者的数量,应当选择开发者较多的

下载镜像
# docker pull centos

查看镜像
# docker images
复制镜像
# docker tag centos centos1[:tag]


启动镜像
docker run -t -i centos /bin/bash
-t分配为终端
-i让容器标准输入打开
加上-d 即使exit退出为终端,容器也在运行,容器里的网站啊数据库都不会停止



查看镜像的运行情况
docker ps 查看正在运行的镜像
docker ps -a 查看正在所有的镜像


删除镜像
如果容器已经启动,先要关闭容器
docker stop CONTAINER_ID


删除镜像
docker rmi centos[:tag] 删除镜像
    tag用于精确定位

# docker rmi hiyang
Untagged: hiyang:latest
# docker rmi yang:latest
Untagged: yang:latest


参考文档http://yaxin-cn.github.io/Docker/how-to-delete-a-docker-image.html

Docker 基于已有镜像的容器创建镜像

官方提供centos镜像,带有yum。
安装一些常用软件
# yum install wget net-tools vim-enhanced



查看系统版本
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)



查看内核 和母机的内核版本相同
# uname -r
2.6.32-573.el6.x86_64



生成新的镜像
# docker commit -m 'centos with net-tools and wget' -a 'hiyang' 8c13d4df2974 centos_with_net

-m 指定说明信息
-a 指定作者
CONTAINER ID 可以缩写

最后是新镜像的名称
基于本地模板dao'ru创建镜像

模板下载地址
https://download.openvz.org/template/precreated/
openvz的模板可以使用在docker中
# wget https://download.openvz.org/template/precreated/centos-6-x86-minimal.tar.gz


导入模板
# cat centos-6-x86-minimal.tar.gz | docker import - centos-6-x86-minimal
此处的名称centos-6-x86-minimal可以自定义


导出镜像
# docker save -o centos_with_net IMAGE_ID



导入镜像
# docker load -i centos6 或者

# docker load < centos6



上推镜像
# docker push image_name



容器管理

启动容器时运行命令,bash -c可以省略可以省略
# docker run -d centos bash -c "while :; do echo "123";sleep 5;done"

# docker exec -it centos bash -c "while :; do echo "123";sleep 5;done"

查看命令运行情况
# docker logs



启动exit后的容器
# docker start CONTAINER_ID
    CONTAINER_ID可以简写


启动容器时,使用--name指定名称
# docker run --name hi -itd centos




关闭容器
# docker stop CONTAINER_ID



进入启动的容器
# docker exec -it CONTAINER_ID /bin/bash
# docker attach CONTAINER_ID 退出后即关闭系统



导出容器
# docker export cea > centos_export.tar


导入容器后是一个镜像,需要重新生成容器
# cat centos_export.tar | docker --import - hiyang

docker仓库管理


下载registry镜像,registry用来搭建本地的docker仓库
# docker pull registry



从外边无法访问容器,因此需要映射
# docker run -d -p 5000:5000 registry



查看registry的运行和端口
# docker ps
CONTAINER ID      IMAGE               COMMAND                CREATED             STATUS            PORTS                  NAMES
c86eaf803b16      registry            "/entrypoint.sh /etc   3 minutes ago       Up 3 minutes      0.0.0.0:5000->5000/tcp   elegant_fermat      



测试网络连通性
# telnet 127.0.0.1 5000 或者
# curl 127.0.0.1:5000



为了测试,选择较小的busybox
# docker pull busybox

添加tag,添加这个tag之后才能上传到私有的仓库中
# docker tag busybox 192.168.1.30:5000/busybox



上传报错
# docker push 192.168.1.30:5000/busybox



Error response from daemon: invalid registry endpoint https://192.168.1.30:5000/v0/: unable to ping registry endpoint https://192.168.1.30:5000/v0/


解决办法,修改配置文件
# vim /etc/init.d/docker
$exec -d --insecure-registry 192.168.1.30:5000 $other_args &>> $logfile &



重启docker
# /etc/init.d/docker restart

启动registry
# docker start c86eaf803b16



上传成功
# docker push 192.168.1.30:5000/busybox
The push refers to a repository (len: 1)
b05baf071fd5: Image already exists
4185ddbe03f8: Image successfully pushed
Digest: sha256:30914a5bc1a94367f542a624e0ae1c7cc544bb97cef5e5b4e3bbf9eafdf6273d








来自为知笔记(Wiz)
页: [1]
查看完整版本: 2 docker模板 镜像 容器 仓库管理