容器docker操作

docker容器中文文档:https://docs.docker-cn.com/

Dockerfile参数详解:https://yq.aliyun.com/articles/69893

 极客学院docker站点:http://wiki.jikexueyuan.com/project/docker-technology-and-combat/what.html

在centos安装docker的时候,如果中途将镜像换成了国内的,而又不知道yum源,那么可以yum clean all清理yum 缓存,将/etc/yum.repos.d/文件下的文件换成原装版本(如果有变动的话)

 

配置匿名国内镜像路径:

1、编辑文件:/etc/docker/daemon.json

{ "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] }

2、sudo systemctl daemon-reload

3、sudo systemctl restart docker

器内如果要下载命令:需要先更新apt-get或者yum,然后下载相应软件

将本地文件拷贝到docker:

  • 1、docker inspect -f '{{.ID}}' 容器短id 拿到容器长id,
  • 2、docker cp 本地文件路径/文件名 长id:容器内的路径/新命名

 

docker完全卸载前还要执行命令查看有没docker包:

  • 执行查看命令yum list installed | grep docker
  • 执行删除命令:$ sudo yum -y remove docker-engine.x86_64

删除镜像前检查该镜像是否被容器使用:如果使用,首先删除该容器:docker rm -f容器进程id,然后删除镜像:docker rmi 镜像id

进入容器两种方式:

  • 1、docker run  --name docker_centos -i -t centos /bin/bash
  • 2、docker attach docker_centos

创建一个db容器,不用指定端口银蛇

sudo docker run -d --name db training/postgres

然后创建一个新的 web 容器,并将它连接到 db 容器

$ sudo docker run -d -P --name web --link db:db training/webapp python app.py

此时,db 容器和 web 容器建立互联关系。

--link 参数的格式为 --link name:alias,其中 name 是要链接的容器的名称,alias 是这个连接的别名。

 命令大全:http://www.runoob.com/docker/docker-command-manual.html

其他:

查看本地所有镜像:docker images -a

查看本地所有容器,包括启动、停止、新创建的容器都会显示:docker -ps -a

搜索镜像:docker search 镜像名[:tag]

docker inspect 容器ID [| less]查看容器的配置信息

 批量启动停止容器:docker stop "docker ps -a |grep Exited |awk '{print $1}'" ,就会批量停止容器,而且屏幕会打印后面的awk信息,start、inspect对容器操作类似

docker run --rm 容器ID[:tag] [linux命令示例:echo “have done”],该命令启动容器,然后执行了echo显示信息就会自动删除

 批量删除容器:docker rm `docker ps -a -q`

打印容器输出日志:docker logs 容器id

使用 docker port 来查看当前映射的端口配置,也可以查看到绑定的地址

容器互联:

通过修改容器创建新的镜像:

  • 1、docker run -it -p 容器名/容器id  /bin/bash
  • 2、第一步操作后进入了容器环境,在容器里进行修改或者创建文件,exit退出
  • 3、docker commit  -m "信息" -a "作者"  容器id 新的镜像id
  • 4、docker images -a可以查看到新生成的镜像文件了
  • 5、docker run -it 新镜像名/id 启动一个新的容器 

 

 建立本地镜像仓库示例:

1、sudo docker run -d -p 5000:5000 --privileged=true -v /opt/data/registry:/tmp/registry registry

或者sudo docker run -d -p 5000:5000 --privileged=true -v /opt/data/registry:/var/lib/registry registry

  如果不确定仓库容器里面存放镜像的地方,可以先启动registry容器,然后执行命令:docker run -it registry 容器id sh  进去里面查看存放镜像位置

--privileged=true作用:最新版本的会出现http传输错误,修改或者新建/etc/docker/daemon.json文件:{ "insecure-registries":["myregistry.example.com:5000"] },或者在启动容器的时候加上参数

2、重启docker服务:systemctl restart docker

3、docker tag cmdbapp(已有镜像名或者id) 192.168.244.136:5000/cmdb[:tag](新的镜像名,必须指定地址作为名字一部分)

4、上传本地镜像到仓库:docker push 192.168.244.136:5000/cmdb

如果出现上传错误,请新建或者修改文件/etc/docker/daemon.json文件的内容为:{ “insecure-registries”:[“xxx.xxx.xxx.xxx:5000”] } 

5、从仓库下载镜像到本地:docker pull 192.168.244.136:5000/cmdb

5、查看本地仓库的所有镜像:curl http://192.168.244.136:5000/v2/_catalog

想要获取指定镜像文件的信息命令:curl http://192.168.244.136:5000/v2/cmdb/tags/list

从其他机器pull本地仓库镜像:

如果出现如下错误:

可以在本地机器上进行如下操作:就是编辑或者新建/etc/docker/daemon.json文件,输入如下的字典形式的信息,对应的ip地址是私有仓库的地址

然后重启本机的docker服务:systemctl restart docker

容器间通信,容器和主机间通信系统默认开发的,如果不能通信,参考网址:http://wiki.jikexueyuan.com/project/docker-technology-and-combat/port_mapping.html

关于安装了docker的centos的系统,如果启动不了docker,出现如下错误信息:

docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 六 2019-03-02 04:48:08 CST; 2min 54s ago
Docs: http://docs.docker.com
Process: 15153 ExecStart=/usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY $REGISTRIES (code=exited, status=1/FAILURE)
Main PID: 15153 (code=exited, status=1/FAILURE)

3月 02 04:48:07 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
3月 02 04:48:07 localhost.localdomain dockerd-current[15153]: time="2019-03-02T04:48:07.027542587+08:00" level=warning msg="could not change group /var/run/docker.sock to docker: group docker not found"
3月 02 04:48:07 localhost.localdomain dockerd-current[15153]: time="2019-03-02T04:48:07.031491199+08:00" level=info msg="libcontainerd: new containerd process, pid: 15159"
3月 02 04:48:08 localhost.localdomain dockerd-current[15153]: time="2019-03-02T04:48:08.038511278+08:00" level=warning msg="overlay2: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior. Reformat the filesystem with ftype=1 to enable d_type support. Running without d_type support will no longer be supported in Docker 1.16."
3月 02 04:48:08 localhost.localdomain dockerd-current[15153]: Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux in docker (--selinux-enabled=false)
3月 02 04:48:08 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
3月 02 04:48:08 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
3月 02 04:48:08 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
3月 02 04:48:08 localhost.localdomain systemd[1]: docker.service failed.

进行如下操作:

1.cd /etc/sysconfig 进入这个文件夹下,vi docker 打开这个文件 修改 OPTIONS=‘--selinux-enabled=false 这个参数即可

2.修改完配置文件启动docker

逆风的方向最适合飞翔,我不怕千万人阻挡,只怕自己投降。
原文地址:https://www.cnblogs.com/daemon-czk/p/10455966.html