容器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