docker学习笔记

现在docker分企业版和社区版,如果自己用的话,还是社区版吧!!!

安装:

centos7:

1.卸载旧版本

$ yum remove docker \
             docker-client \
             docker-client-latest \
             docker-common \
             docker-latest \
             docker-latest-logrotate \
             docker-logrotate \
             docker-selinux \
             docker-engine-selinux \
             docker-engine

2.安装依赖包:

$ yum install -y yum-utils device-mapper-persistent-data lvm2

3.安装docker官方库:

$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.安装最新稳定版本docker:

$ yum install docker-ce

如果提示接受GPG密钥,请验证指纹是否匹配060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果匹配 ,则接受它。

ubuntu:

    $ sudo apt-get update
    $ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg 'sudo pt-key add -'
    $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    $ sudo apt-get update

其它发行版本的请参考:官方文档

配置:

1.Linux更改Docker运行根目录

Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致:

在 ubuntu 中的位置是:/etc/default/docker

在 centos 中的位置是:/etc/sysconfig/docker

只需要更改 vim /etc/sysconfig/docker 成

为OPTIONS选项添加参数:–graph=/home/docker –icc=false –graph=/your/dir

–icc=false禁用容器内部通信,为安全建议添加,内部通信使用link

–graph=/your/dir 自定义运行目录

或者使用软件链接:

# ln -sv /home/docker/ /var/lib/docker

搞定!

2.iptables设置:

# iptables -A INPUT -s 172.17.0.0/16 -d 172.17.0.0/16 -j ACCEPT

命令:

  • 查找镜像:docker search centos

  • 下载镜像:docker pull centos

  • 列出本地镜像:docker images

  • 删除镜像:docker rmi 镜像名

  • 运行容器: # docker run -it --name 容器名 --link 链接容器名:别名 -v 本地绝对路径:容器路径 -p ip:本地端口:容器端口/udp --restart=always (docker服务启动后容器自动启动,no 不启动;on-failure 容器退出状态非0时重启)-e MYSQL_ROOT_PASSWORD='passwd'(设置环境变量) --dns=自定义的DNS -d(后台运行) 镜像 运行程序(这里的程序可以是/bin/下的程序,可以将shell放到bin下)

  • 列出运行容器:docker container ls

  • 列出所有容器:docker container ls -a

  • 运行容器:docker start 容器名(-i参数进入命令行)

  • 进入运行容器:docker exec -it 容器名 /bin/bash

  • 停止容器:docker stop 容器名

  • kill容器:docker kill 容器名

  • 删除容器:docker rm 容器名

  • 查看容器信息:docker inspect 容器名

  • 查看容器log:docker logs 容器名

  • 利用已有容器修改或建立新的镜像:docker commit -m “说明信息” -a “用户信息” 容器名 centos7/nginx-php:v2

  • 镜像存出:docker save -o ubuntu_14.04.tar ubuntu:14.04或docker save > ubuntu_14.04.tar ubuntu:14.04

  • 镜像载入:docker load -i ubuntu_14.04.tar或docker load < ubuntu_14.04.tar

  • 容器导出:docker export ubuntu > ubuntu.tar

  • 容器导入:docker import ubuntu.tar test/ubuntu 注意: 容器导入后就成镜像了,如果容器有运行的命令,在run的时候也一定要加上命令,否则不能成功创建。 镜像就不存在这个问题

  • 从主机复制到容器:docker cp host_path containerID:container_path

  • 从容器复制到主机:docker cp containerID:container_path host_path

  • 最后添加"运行命令"的shell里,如果没有驻留服务的话,一定要在最后一行写bash,否则无法启动。

docker网络设置:

docker安装后,默认会创建三种网络类型,bridge、host和none,可通过如下命令查看:

# docker network ls

bridge:网络桥接

默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应IP地址,这就导致容器每次重启,IP都发生变化,这种类型下无法设置固定IP

none:无指定网络

启动容器时,可以通过-network=none,docker容器不会分配局域网ip

host:主机网络

docker容器的网络会附属在主机上,两者是互通的。这种类型下可以设置固定IP

创建固定ip容器:

1.创建自定义网络类型,并且指定网段

# docker network create --subnet=192.168.168.0/30 mynet 通过docker network ls可以查看到网络类型中多了一个mynet

2.使用新的网络类型创建并启动容器

# docker run -it --name test --net mynet --ip 192.168.168.2 centos /bin/bash

存在问题:

  • docker-storage-setup不能启动的问题。 编辑/etc/sysconfig/docker-storage-setup文件 添加STORAGE_DRIVER=“overlay”
  • 容器启动自动运行 编辑/etc/bashrc文件 添加运行命令在文件最后