您的位置:首页 > 运维架构 > Docker

docker 安装跟基本操作

2016-03-10 09:46 946 查看
1.更新 yum 源

centOS 6:

# yum -y install epel-release
# yum -y install docker-io

centOS 7:

# yum -y install docker

2.升级系统内核

yum -y update

3.启动 docker

# /etc/init.d/docker start

基本操作:

一、镜像管理

1.搜索 docker 仓库 的镜像

# docker search (image-name) 比如: docker search centos

2.搜索本地 docker 镜像

# docker images

3.从 docker 仓库下载 镜像

# docker pull (image-name) 比如: docker pull centos

4.删除镜像
# docker rmi tag-name( image-name ) (删除标记,或者删除整个容器及其标记)

5.创建新镜像

# docker commit -m "message" -a "auther" image_id +新镜像名 比如:# docker commit -m "install httpd" -a "Snow" 2c74d574293f httpd/centos (在 httpd/centos
中安装了 httpd 服务)

6.导出镜像,进行该镜像的备份

# docker save -o httpd-centos.tar httpd/centos

7.导入镜像,覆盖已经存在的该镜像

# docker load --input httpd-centos.tar ; # docker load < httpd-centos.tar

8.上传到 dockerhub 仓库

# docker push image_name 需要 dockerhub 账号 比如: docker push httpd/centos

二、容器管理
1.开启容器
1)、# docker run -t -i centos /bin/bash (exit 或者 ctl +d 之后退出,并且容器停止 -i:打开容器的 STDIN,-t:为容器分配一个伪tty终端)
2)、# docker run -d centos /bin/bash -c "while :; do echo "123";sleep 1; done" (在后台运行)
3)、# docker create -it centos ; # docker start centos (start ,stop, restart)

如何进入后台容器:
# docker attach container_id (进入后台运行的容器)
# docker exec -it container_id /bin/bash (临时打开一个后台容器会话,退出后,容器还在运行)
查看后台运行的容器的日志
# docker logs container_id
2.查看 docker 容器
# docker ps (-a)
3.对 docker 容器打标记
# docker tag centos aming1( 打完标记之后 docker images 可以查看到标记的 images )
4.删除容器
# docker rm container_id (在运行中的 docker container 不能被删除)
5.导出容器,备份一个容器

# docker export containner_id > container.tar

6.导入容器会生成一个新的镜像 (使用 docker images 查看)

# cat container.tar | docker import - centos_test 导入并重命名镜像

7.一次性启动一个容器,结束删除

docker run -it --rm centos bash

三、仓库管理

1.下载 registry 镜像

# docker pull registry

2.运行 registry 容器

# mkdir /registry

# docker run -d -p 5000:5000 -v /registry:/tmp/registry --name=docker_registry registry

3.修改 docker 配置文件,默认使用 http 访问

# vim /etc/init.d/docker

修改 $exec -d $other_args 为 $exec
-d --insecure-registry 192.168.32.103:5000 $other_args

4.重启 docker 并启动 registry 容器

# service docker restart

# docker start registry_container_id

5.上传 镜像文件到 本地 docker 仓库

# docker tag centos( docker images 获取到 ) 192.168.32.103:5000/centos (此处应该为 docker commit 来生成一个新的镜像,而不是 tag )

# docker push 192.168.32.103:5000/centos

6.查看本地 docker 仓库中的镜像文件

# curl http://192.168.32.103:5000/v1/search

7.下载本地 docker 仓库的镜像文件

# docker pull 192.168.32.103:5000/centos

四、数据管理

1.创建一个容器

# docker run -tid -v /data:/data centos --name datavol /bin/bash

-v :用来指定挂载目录,:前面的/data/为本地目录,:后面的/data/为容器里的目录

--name : 自定义容器name,这个名字可以使用命令
docker ps 看最右侧一列

2.创建容器的同时挂载数据卷

# docker run -itd --volumes-from ( 其他容器的name) centos /bin/bash 此处centos 为你要创建的新的容器,而此容器的数据是从 名为name的容器 中获取的

3.自定义数据卷容器

# docker run -itd -v /data --name testvol centos /bin/bash (创建 centos 镜像的容器,其容器名为 testvol,并且该容器的数据放在 /data 下)

# docker run -itd --volumes-from testvol centos /bin/bash (创建一个 centos 镜像的不命名的容器,并且该容器的数据卷来自 testvol 的容器)

4.数据卷的备份

上面已经建立了一个数据卷的容器,现在进行数据卷容器的备份

# mkdir /volume-backup (创建 /volume-backup 来存放 数据卷的备份文件)

# docker run -itd --volumes-from testvol -v /volume-backup:/backup centos tar cvf /backup/data.tar /data (此容器创建后并没有running ,需要 docker ps -a 查看)

首先备份 数据卷 需要通过打开一个容器来备份,然后指定它 的数据卷来源为 testvol ,并将 本地的 /volume-backup 目录作为备份文件的挂载点,而容器的 /data 目录又是用来存放数据卷的数据的,所以对 容器中 的/data 目录进行打包放到 /backup 下,其实就是将 testvol 数据卷的数据备份到本地的 /volume-backup 下

5.数据卷的恢复

数据卷的恢复其实就是将本地备份的数据 挂载到 新的容器中的 /data 目录下,首先要新创建一个数据卷容器

# docker run -itd -v /data --name testvol2 centos /bin/bash

然后进行挂载并解压

# docker run -itd --volumes-from testvol2 -v /volume-backup:/backup centos tar xvf /backup/data.tar

五、网络管理

四种网络模式:

1)、host 模式:使用docker run时使用--net=host指定 docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip

2)、container 模式:使用--net=container:container_id/container_name 多个容器使用共同的网络,看到的ip是一样的

3)、none 模式:使用--net=none指定 这种模式下,不会配置任何网络

4)、bridge 模式:使用--net=bridge指定 默认模式,不用指定默认就是这种网络模式。这种模式会为每个容器分配一个独立的Network Namespace。类似于vmware的nat网络模式。同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的

外部网络访问容器:

创建一个 安装好 httpd 服务的容器

# docker run -itd -p 5123:80 centos-httpd bash

# docker exec -it httpd_container_id bash

# httpd -k start

# vim /var/www/html/1.html

# exit

# curl 127.0.0.1:5123/1.html

其中 -p 选项也支持 ip:port:port 跟 ip::port

比如:127.0.0.1:5123:80 和 127.0.0.1::80

前者将本地 5123 端口映射到容器的80端口;后者将随机分配一个本地端口到容器的80端口

容器互联:

创建一个 mysql 的容器

# docker pull mysql

# docker run -itd -p 13306:3306 --name db mysql bash

新建一个 web 容器跟 mysql 容器互联

# docker run -itd -p 12308:80 --name web --link db:db centos-httpd bash

--link name:alias
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: