yum install docker #根据提示安装yum
apt install docker #根据提示安装docker docker run ubuntu:15.10 /bin/echo “hello world” #运行ubuntu15.10镜像形成容器,并在容器里执行hello world ,如果没有镜像会去下载
docker run -it ubuntu:15.10 /bin/bash #运行交互式的容器,通过-i(伪终端)-t(交互)让docker运行的容器实现对话的能力,一个容器相当于一个linux操作系统,和其它容器和宿主机没有关系 root@54654231346dfjds:/# #进入了ubuntu系统的容器内部
cat /proc/version #查看当前系统版本
exit 或 ctrl + D #退出容器
docker ps #查看正在运行的容器
docker stop ubuntu:15.10 #停止容器
docker 会列出许多使用方法 docker stats --help 命令使用方法
docker pull ubuntu #获取镜像
docker run -it ubuntu /bin/bash #运行容器并进入交互式终端
docker ps -a #查看所有的容器
docker start b750bbbcfd88 #启动一个已停止的容器
docker run -itd --name ubuntu-test ubuntu /bin/bash #-d后台运行容器
docker attach docker exec 后台时的容器,想进去用这两个随意一个,推荐第二个,因为它退出容器终端,不会导致容器停止 docker attach b750bbbcfd88 docker exec -it b750bbbcfd88 /bin/bash
docker stop 容器id #停止一个容器
docker restart 容器id #重启容器
docker export b750bbbcfd88 > ubuntu.tar #导出本地某个容器
cat docker /ubuntu.tar | docker import - test/ubuntu:v1 #使用docker import 从容器快照文件中在导入为镜像,以下实例将快照文件ubuntu.tar导入到镜像test/ubuntu:v1
docker rm -f b750bbbcfd88 #删除容器
docker container prnue #清理掉所有处于终止状态的容器
运行web应用 docker pull training/webapp #载入镜像 docker run -d -p training/webapp python app.py #-d后台 -p将容器内部使用的网络端口映射到我们使用的主机上 docker ps docker run -d -p 5000:5000 training/webapp app.py #容器内部的端口映射到本地主机上
查看端口映射情况可以docker ps查看全部,也可以查看指定容器 docker port b750bbbcfd88 或 docker port joker-name
docker logs id名字 #查看web应用程序日志 docker logs -f b750bbbcfd88 #-f是标准输出
docker top name 或 docker top b750bbbcfd88 #查看容器内部容器运行的进程
docker inspect #查看docker的底层信息,返回一个json文件,记录docker容器的配置和状态信息
docker stop name #停止web应用容器
docker start name #重启web应用容器
docker ps -l #查询最后一次创建的容器
docker restart #重启docker
docker rm name #移除web应用容器,移除前必需停止容器,否则会报错
docker -v #查看docker是否安装正确
linux环境配置: pwd :查看路径 sudo find / -name xxx sudo gedit ~/.profile 文件末尾添加: export PATH="$PATH:your path" 重启生效 启动docker:service docker start
停止docker:service docker stop
重启docker:service docker restart
查看docker状态:service docker status
开机启动:chkconfig docker on
查看docker概要信息:docker info
查看docker帮助文档:docker --help
错误:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied 解决方法:sudo groupadd docker #添加docker用户组 sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中 newgrp docker #更新用户组 docker ps #测试docker命令是否可以使用sudo正常使用 或,用sudo来执行命令也可以
配置加速原 cd /etc/docker vim daemon.json { “registry-mirrors”:[“https://m9r2r2uj.mirror.aliyuncs.com”] } 保存退出 重启docker服务 service docker restart
下载镜像 :docker pull java:8
列出镜像 :docker images
删除本地镜像 :docker rmi java
新建并启动容器:docker run -d -p 91:80 nginx
docker images #列出镜像列表
docker run -it ubuntu:15.10 /bin/bash #运行指定版本镜像
docker pull ubuntu:13.10 #获取一个新的镜像
docker search httpd #查找镜像
docker rmi ubuntu #删除镜像
创建镜像方法:当下载的镜像不满足需求时1.从已经创建的容器中更新镜像,并且提交这个镜像 2.使用dockerfile指令来创建一个容器 更新镜像前,需要使用镜像来创建一个容器 docker run -it ubuntu:15.10 /bin/bash 在运行的容器内使用apt-get update命令进行更新 在完成操作后使用exit命令来退出这个容器 使用docker commit来提交容器副本 docker commit -m=“has update” -a=“runoob” b750bbbcfd88 runoob/ubuntu:v2 #-m提交的描述信息 -a指定镜像作者 b750bbbcfd88容器id runoob/ubuntu:v2指定要创建的目标镜像名
docker run -it runoob/ubuntu:v2 /bin/bash #启动新镜像
构建 cat Dockerfile docker build -t runoob/centos:6.7 #-t指定要创建的目标镜像名 .:Dockerfile文件所在目录,可以指定Dockerfile的绝对路径 docker images docker run -it runboot/centos:6.7 /bin/bash #创建容器 id runboot docker tag b750bbbcfd8 runboot/contos:dev #为镜像添加一个新的标签dev id是相同的
网络端口映射 TCP docker run -d -P training/webapp python app.py #创建一个python应用的容器 docker ps docker run -d -P 5000:5000 training/webapp python app.py docker ps docker run -d -P 127.0.0.1:5001:5000 training/webapp python app.py #这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口 UDP docker run -d -P 127.0.0.1:5001:5000/udp training/webapp python app.py docker ps docker port name 5000 #查看端口绑定情况
端口映射并不是唯一把 docker 连接到另一个容器的方法。 docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。 docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。
docker run -d -P --name runoob training/webapp python app.py #命名容器 docker ps -l docker network create -d bridge test-net #创建一个新的docker网络 -d指定docker网络类型,有bridge,overlay docker run -itd --name test1 --network test-net ubuntu /bin/bash #运行一个容器连接到新建的test-net网络 docker run -itd --name test2 --network test-net ubuntu /bin/bash #打开新的终端,再运行一个容器加入到test-net网络 ping一下查看是否容器互联 如果没有ping命令执行 apt-get update apt install iputils-ping 如果你有多个容器之间需要互相连接,推荐使用 Docker Compose
配置DNS 我们可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:
{ “dns” : [ “114.114.114.114”, “8.8.8.8” ] } 设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。
配置完,需要重启 docker 才能生效。
查看容器的 DNS 是否生效可以使用以下命令,它会输出容器的 DNS 信息:
$ docker run -it --rm ubuntu cat etc/resolv.conf
如果只想在指定的容器设置 DNS,则可以使用以下命令:
$ docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu 参数说明:
–rm:容器退出时自动清理容器内部的文件系统。
-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
–dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
–dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。 如果在容器启动时没有指定 --dns 和 --dns-search,Docker 会默认用宿主主机上的 /etc/resolv.conf 来配置容器的 DNS。
来自docker hub docker login docker logout docker sraech ubuntu docker pull ubuntu docker push #将自己的镜像推送到docker hub
docker tag 账号/ubuntu:18.04 docker images ls docker push 账号/ubuntu:18.04 docker search 账号/ubuntu
他是用来构建镜像的文本文件,文本内容包括一条条构建镜像所需的指令和说明
下面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)
在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容
mkdir Dockerfile
cd Dockerfile
vi Dockerfile
cat Dockerfile
FROM nginx RUN echo ‘这是一个本地构建的nginx镜像’ > /usr/share/nginx/html/index.html
docker-compose up #启动应用程序
docker-compose up -d #后台