docker

https://www.cnblogs.com/openxxs/p/4690478.html
===========================Docker=======================

http://www.cnblogs.com/zhangmingcheng/p/5720792.html
web容器:tomcat weblogic
容器:
     container:
        docker 2014开发
        lxc linux container
轻量级虚拟机(类似于操作系统级虚拟化 openvz)
共享宿主机内核
Docker介绍:
?Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器
引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。通过
分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维
工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开
销的情况下提供资源隔离的应用运行环境。

Docker系统有两个程序:
docker服务端和docker客户端。
docker服务端是一个服务进程,管理着所有的容器。
docker客户端则扮演着docker服务端的远程控制器,可以用来控制
docker的服务端进程。


Docker三大核心组件:
? Docker 镜像 - Docker images 
? Docker 仓库 - Docker registeries 
? Docker 容器 - Docker containers 


docker 国内仓库
 网易蜂巢 阿里云 daocloud

===============================安装docker===================

一. 使用官方源安装(法一)
yum -y install docker

二、修改yum源,指定Docker官方的yum源安装(法二)
1.cat >  /etc/yum.repos.d/docker.repo <<eof
[docker]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
eof
2、安装软件:
yum install docker-enginer 
在安装过程中,很容易出现mirror下载速度太低,导致安装失败,多运行几次。

3、启动docker服务(wing提示:注意你的防火墙:)
systemctl start docker.service
`=========================注册网站账号===============`
1.注册网站账号
进入网站:https://hub.daocloud.io/
注册帐号:guoqingyangzz
2.然后进入你自己的“"制台",选择"加速器",点"立即开始",接入你自有的主机,就看到如下的内容了
下载并安装相关软件
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://4fa7a90a.m.daocloud.io 
   
创建或修改 /etc/docker/daemon.json 文件,修改为如下形式 (请将 加速地址 替换为在加速器页面获取的专属地址)

{
    "registry-mirrors": [
        "加速地址"
    ],
    "insecure-registries": []
}
启动服务
systemctl restart docker   
3.配置完成后从Docker Hub Mirror下载镜像,命令:
docker pull ubuntu:12.10
查看已经下载的镜像 
docker image list

运行容器
docker run -i -t  daocloud.io/library/ubuntu

只查看所有镜像的ID
[root@web1 ~]# docker images -q
2e769f4d3e9c
70b5d81549ec
e934aafc2206
1ae98b2c895d

只查看所有容器ID
[root@web1 ~]# docker ps -a -q
f54243bee7e5
a8173539d40f

删除所有镜像
docker rmi $(docker images -q)


移除一个或者多个容器,注意,不可以删除一个运行中的容器,必须先用docker stop或docker kill使其停止。
当然可以强制删除,必须加-f参数
docker rmi ID 
-i 交互式 -t终端

若要断开与容器的连接,并且关闭容器:容器内部执行如下命令
[root@web1 ~]# docker run -it  daocloud.io/centos:5
[root@a23c0d7358d6 /]# exit
exit

查看更详细
[root@web1 ~]# docker inspect a8173539d40f
yum -y install openssh-server
/etc/init.d/sshd start 

注1:wing第一次使用daocloud是配置了加速器的,可以直接使用dao pull centos拉取经过加速之后的镜像,但是后
来发现,不使用加速器也可以直接在daocloud官网上找到想要拉取的镜像地址进行拉取,比如:#docker pull 
daocloud.io/library/tomcat:6.0-jre7
注2:上面配置加速器的方法,官网会更新,最新方法你应该根据官网提示去操作。
进入网站:https://hub.daocloud.io/

==============集群管理====================================

点集群管理-》管理主机

==============================例子====================================
例一 运行交互式的容器

[root@localhost yum.repos.d]# docker run -t -i daocloud.io/centos:7 /bin/echo "hello world"
hello world
-t:在新容器内指定一个伪终端或终端。

-i:允许你对容器内的标准输入 (STDIN) 进行交互。

例二:启动容器(后台模式)

[root@localhost yum.repos.d]# docker run -t -i daocloud.io/centos:7 
/bin/sh -c "while true; do echo hello world; sleep 1; done"  [终端1]

[root@localhost yum.repos.d]# docker ps   查看允许的容器                   [终端2]            
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS               NAMES
6edb81f9abbc        daocloud.io/centos:7   "/bin/sh -c 'while..."   25 seconds ago      Up 25 seconds                           hungry_engelbart
[root@localhost yum.repos.d]# docker logs 6edb81f9abbc 查看容器内的标准输出
hello world
hello world
[root@localhost yum.repos.d]# docker stop 6edb81f9abbc  停止容器
6edb81f9abbc

例三 将镜像打包->删除镜像->镜像还原

[root@localhost yum.repos.d]# docker image list
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
daocloud.io/nginx    latest              cd5239a0906a        2 weeks ago         109 MB
daocloud.io/centos   7                   e934aafc2206        2 months ago        199 MB
[root@localhost yum.repos.d]# docker save -o nginx.tar daocloud.io/nginx
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  nginx.tar
[root@localhost yum.repos.d]# docker rmi daocloud.io/nginx:latest
Untagged: daocloud.io/nginx:latest
Untagged: daocloud.io/nginx@sha256:1f9c00b4c95ef931afa097823d902e7602aebc3ec5532e907e066978075ca3e0
Deleted: sha256:cd5239a0906a6ccf0562354852fae04bc5b52d72a2aff9a871ddb6bd57553569
Deleted: sha256:530991fd6d0f08206190b1bf71ef51b4534365669785cb461c24d62083f67bb3
[root@localhost yum.repos.d]# docker image list
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
daocloud.io/centos   7                   e934aafc2206        2 months ago        199 MB
[root@localhost yum.repos.d]# docker load < nginx.tar
d626a8ad97a1: Loading layer [==================================================>] 58.46 MB/58.46 MB
24ee0a3fd4b9: Loading layer [==================================================>] 54.22 MB/54.22 MB
3ff93588120e: Loading layer [==================================================>] 3.584 kB/3.584 kB

例四 在宿主机和容器之间相互COPY文件

[root@localhost yum.repos.d]# docker pull daocloud.io/mysql:latest
Trying to pull repository daocloud.io/mysql ... 
latest: Pulling from daocloud.io/mysql
[root@localhost yum.repos.d] docker run -t -i daocloud.io/mysql:latest

例五:docker使用mysql

[root@localhost yum.repos.d] docker run --name mysql --restart=always -p 0.0.0.0:3306:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d daocloud.io/mysql:latest

[root@localhost yum.repos.d] docker exec -it mysql bash    首先进入mysql容器的bash终端:
root@9cb5a46ca7dc:/# ls
bin   dev             entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint-initdb.d  etc        lib   media  opt  root  sbin  sys  usr
root@9cb5a46ca7dc:/# mysql -u root -p123456       连接mysql
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.11 MySQL Community Server - GPL

将容器的文件系统打包成tar文件
第一种

[root@VM_0_14_centos ~]# docker export --help

Usage:  docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

Options:
      --help            Print usage
  -o, --output string   Write to a file, instead of STDOUT
[root@VM_0_14_centos ~]# docker export -o centos7.tar centos
[root@VM_0_14_centos ~]# ls
centos7.tar

第二种

[root@VM_0_14_centos ~]# docker save -o cetos7.2.tar centos
docker load < centos.tar

部署私有仓库

docker run -d -p 5000:5000 daocloud.io/library/registry:latest
docker run -d --name myhome -p 5000:5000 daocloud.io/library/registry:latest
docker restart myhome
docker exec -it myhome /bin/sh
docker pull daocloud.io/busybox
docker tag daocloud.io/busybox 119.29.175.88:5000/busybox
docker push 119.29.175.88:5000/busybox
[root@VM_0_14_centos sinatra]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://4fa7a90a.m.daocloud.io"],"insecure-registries":["119.29.175.88:5000"]}
[root@VM_0_14_centos sinatra]# docker restart myhome
myhome
[root@VM_0_14_centos sinatra]# docker exec -it myhome /bin/sh
/ # ls
bin            entrypoint.sh  home           linuxrc        mnt            root           sbin           sys            usr
dev            etc            lib            media          proc           run            srv            tmp            var
/ # 
[root@VM_0_14_centos sinatra]# docker push 119.29.175.88:5000/v2/_catalog
Error parsing reference: "119.29.175.88:5000/v2/_catalog" is not a valid repository/tag: invalid reference format
[root@VM_0_14_centos sinatra]# curl 119.29.175.88:5000/v2/_catalog
{"repositories":["busybox"]}
杀死所有running状态的容器
# docker kill $(docker ps -a -q)
docker stop id(别名)
docker rm `docker ps -q`

容器通信

1.png
TIM截图20180715145712.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容