docker基本
1.换源
vi /etc/docker/daemon.json
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
2.拉取并启动容器
docker以ubuntu15.10镜像创建一个新容器,然后在容器里执行/bin/echo 'test',输出结果
docker run ubuntu:15.10 /bin/echo 'test'
docker进入终端模式 -i输入流 -t打开终端
docker run -i -t ubuntu:15.10 /bin/bash
exit退出终端,退出容器
后台模式启动容器
docker run -d ubuntu:15.10 /bin/sh -c "sleep test"
查看后台运行容器
docker ps
container id:容器id
image:使用的镜像
command:启动容器时运行的命令
created:容器的创建时间
-
status:容器状态
- created(已创建)
- restarting(重启中)
- running或up(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
ports:容器的端口信息和使用的连接类型(tcp/udp)
names:自动分配的容器名称
docker logs (commonid/name)查看容器内的标准输出
docker logs 1231313
docker stop (commonid/name)停止容器
3.容器使用
获取镜像
docker pull ubuntu
使用ubuntu镜像启动一个容器
docker run -it ubuntu /bin/bash
参数说明:
-i:交互式操作
-t:终端
ubuntu:ubuntu镜像
/bin/bash:放在镜像后的命令,进入终端bash命令
退出终端 exit
启动已停止运行的容器
查看所有的容器命令
docker ps -a
使用docker start (commonid/name)启动一个已停止的容器
docker start b750bbbcfd88
进入一个已启动的容器
docker attach b750bbbcfd88
后台运行-d,加了-d参数默认不会进入容器,想要进入容器需要使用docker exec
docker run -itd --name ubuntu-test ubuntu /bin/bash
docker exec -it 123133 /bin/bash
停止一个容器
docker stop commonid
重启容器
docker restart commonid
进入容器
加-d参数,容器进入后台,可以使用下面的命令进入容器
docker attach commonid
docker exec commonid
退出容器终端,不会导致容器停止
4.导出和导入容器
导出容器
docker export commonid > ubuntu.tar
导入容器快照为镜像
docker import ubuntu.tar ubuntu:1510
docker import http://example.com/exampleimage.tgz example/imagerepo
查看镜像
docker images
删除镜像
docker image rm name:tag
删除容器
docker rm -f commonid
清理掉所有处于终止状态的容器
docker container prune
5.运行一个web应用
docker pull training/webapp
载入镜像
-d让容器后台运行
-P将容器内部使用的网络端口随机映射到我们使用的主机上
docker run -d -P training/webapp python app.py
docker run -d -p 5000:5000 training/webapp python app.py
查看后台运行状态
docker ps
查看容器端口
docker port commonid
查看web应用日志
docker logs -f commonid
查看web应用容器的进程
docker top commonid
使用docker inspect查看docker底层信息
docker inspect name
docker ps -l查询最后一次创建的容器
docker镜像使用
列出镜像列表
docker images
使用镜像运行容器
docker run -tid ubuntu:15.10 /bin/bash
获取一个新的镜像
docker pull ubuntu:13.10
使用镜像运行容器
docker run -tid ubuntu:13.10 /bin/bash
查找镜像
docker search httpd
运行镜像
docker run httpd
删除镜像
docker rmi httpd
创建镜像
1. 从已经创建的容器中更新镜像,并且提交这个镜像
2. 使用dockerfile指令来创建一个新的镜像
更新镜像
1. 使用镜像来创建一个容器,在容器中使用apt-get update更新,exit退出容器
2. 换源更新下载vim
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
docker run -it ubuntu:15.10 /bin/bash
-m:提交的描述信息 -a:指定镜像作者 1231123:容器id runoob/ubuntu:v1:指定要创建的目标镜像名
docker commit -m="update" -a="runoob" 131313 runoob/ubuntu:v1
docker tag ivan/gcc:v1 843741683/gcc:v1
docker push 843741683/gcc:v1
docker images
查看更新的镜像
构建镜像
docker build 创建一个Dockerfile告诉docker如何构建我们的镜像
FROM centos:6.7
RUN /bin/echo 'root:123456'|chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456'|chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
-t:指定要创建的目标镜像名
.:dockerfile文件所在的目录
docker build -t runoob/centos:6.7 .
docker images
docker run -it runoob/centos:6.7 /bin/bash
设置镜像标签
docker tag commonid runoob/centos:dev
6.docker容器链接
1.网络端口映射
-P:是容器内部端口随机映射到主机的高端口
-p:是容器内部端口绑定到指定的主机端口
指定ip端口udp
docker run -d -P training/webapp python app.py
docker ps
docker run -d -p 5000:5000 training/webapp python app.py
docker run -d -p 127.0.0.1:5001:5000/udp training/webapp python app.py
docker port name 5000
2.docker 容器互联
docker连接会创建一个父子关系,其中 父容器可以看到子容器的信息
容器命名 --name
docker run -d -P --name runoob training/webapp python app.py
docker ps -l
3.新建网络
-d:参数指定docker网络类型,有bridge.overlay
docker network create -d bridge test-net
docker network ls
docker run -itd --name test1 --network test-net ubuntu /bin/bash
docker run -itd --name test2 --network test-net ubuntu /bin/bash
apt-get update
apt install iputils-ping
docker exec -it test1 /bin/bash
ping test2
配置dns
查看容器dns信息
docker run -it --rm ubuntu cat etc/resolv.conf
-rm:容器退出时自动清理容器内部的文件系统
-h hostname或者--hostname=HOSTNAME:设定容器的主机名,它会被写到容器内的/etc/hostname和/etc/hosts
--dns=ip_address:添加dns服务器到容器的/etc/resolv.conf,让容器用这个服务器来解析所有不在/etc/hosts中的主机名
--dns-search=DOMAIN:设定容器的搜索域,当设定搜索域为.com
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu
7.docker仓库管理
docker hub
docker login
docker logout
docker search ubuntu
docker pull ubuntu
docker image ls
docker push ubuntu:18.10
docker search ubuntu:18.10
8.使用Dockerfile定制镜像
FROM centos
RUN yum install wget
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
&& tar -xvf redis.tar.gz