镜像管理
搜索镜像
# docker search centos
    [stars]:开发者的数量,应当选择开发者较多的
下载镜像
# 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 [192.168.1.30:5000/busybox] (len: 1)
b05baf071fd5: Image already exists 
4185ddbe03f8: Image successfully pushed 
Digest: sha256:30914a5bc1a94367f542a624e0ae1c7cc544bb97cef5e5b4e3bbf9eafdf6273d



来自为知笔记(Wiz)