Skip to content

Instantly share code, notes, and snippets.

@jingmian
Last active November 30, 2018 02:56
Show Gist options
  • Save jingmian/8b5f8ae84d8a6baebd90ee041c2d3078 to your computer and use it in GitHub Desktop.
Save jingmian/8b5f8ae84d8a6baebd90ee041c2d3078 to your computer and use it in GitHub Desktop.
Docker安装
uname -r 3.10.0-327.el7.x86_64
yum -y install docker
yum update
service docker start
docker run hello-world
由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
sudo yum update
==========================================ubuntu 14.04安装docker======================================================
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=17.03.1~ce-0~ubuntu-xenial
======================================================================================================================
3.加入开机启动
chkconfig docker on
docker run ubuntu:15.10 /bin/echo "Hello world"
//以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
docker: Docker 的二进制执行文件。
run:与前面的 docker 组合来运行一个容器。
ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令
//我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
docker run -i -t ubuntu:15.10 /bin/bash
各个参数解析:
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
//我们尝试在容器中运行命令和ls分别查看当前系统的版本信息和当前目录下的文件列表
cat /proc/version
//exit命令或者使用CTRL+D来退出容器。
//启动容器(后台模式)
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
//确认容器是否在运行
docker ps
//列出所有运行过的镜像
docker ps -a
//查看容器内的标准输出
docker logs 2b1b7a428627
//查看到 Docker 客户端的所有命令选项。
docker
//更深入的了解指定的 Docker 命令使用方法
docker stats --help
//docker 构建一个 web 应用程序
docker run -d -P training/webapp python app.py
参数说明:
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。
//指定端口web服务器
docker run -d -p 5000:5000 training/webapp python app.py
//通过docker ps 命令可以查看到web应用容器ID为:7a38a1ad55c6
docker port 5e869b63806f
//查看WEB应用程序日志
docker logs -f 5e869b63806f
-f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。
//查看WEB应用程序容器的进程
docker top 5e869b63806f
//检查WEB应用程序
docker inspect 5e869b63806f
//停止WEB应用容器
docker stop 5e869b63806f
//重启WEB应用容器
docker start 5e869b63806f
//移除WEB应用容器,删除容器时,容器必须是停止状态,否则会报如下错误
docker rm 5e869b63806f
//列出镜像列表
docker images
各个选项说明:
REPOSTITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
//删除镜像
docker rmi 68iad299op
//获取一个新的镜像,预先下载这个镜像,我们可以使用 docker pull 命令来下载它
docker pull ubuntu:13.10
//指定某个为15.10的ubuntu系统镜像来运行容器,如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
docker run -t -i ubuntu:15.10 /bin/bash
//查找镜像
docker search httpd
如果出现Error response from daemon: Get https://index.docker.io/v1/search?q=tutorial: x509: certificate has expired or is not yet valid
需要配置加速器,如果是 Ubuntu 14.04,那么编辑 /etc/default/docker
# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
//重启
service docker restart
//检查配置是否生效
ps -ef | grep dockerd
//更新镜像,需要退出容器进行
docker commit -m="has update" -a="youj" 5e869b63806f w3cschool/ubuntu:v2
各个参数说明:
-m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID
w3cschool/ubuntu:v2:指定要创建的目标镜像名
//设置镜像标签, /线前面必须是自已的账号
docker tag dd2413dd9ece youj/centos:dev
docker tag 5afb5bf66f4e cs5117155/dnmp_php54:version1.0
//上传镜像
docker push cs5117155/dnmp_php54:version1.0
//网络端口映射,默认都是绑定 tcp 端口,如果要绑定 UPD 端口,可以在端口后面加上 /udp。
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
//查看容器端口绑定的情况
docker port 90349255a06f 5000
//容器命令
docker run -d -P --name zhangsan training/webapp python app.py
//使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机(本机)的8080端口,主机的目录/data映射到容器的/data
docker run -p 8080:80 -v /data:/data -d nginx:latest
//系统 日志位置
Ubuntu(14.04) /var/log/upstart/docker.log
Ubuntu(16.04) journalctl -u docker.service
CentOS 7/RHEL 7/Fedora journalctl -u docker.service
CoreOS journalctl -u docker.service
OpenSuSE journalctl -u docker.service
OSX ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log
Debian GNU/Linux 7 /var/log/daemon.log
Debian GNU/Linux 8 journalctl -u docker.service
Boot2Docker /var/log/docker.log
==========================
//这样就能启动一个一直停留在后台运行的Centos了。如果少了/bin/bash的话,Docker会生成一个Container但是马上就停止了,不会一致运行即使有了-d参数。
docker run -d -i -t <imageID> /bin/bash
//进入我们这个Centos
docker attach <ContainerID>
//直接进去ubuntu 14.04版本
docker run -it --rm ubuntu:14.04 /bin/bash
docker run -it --rm 80d529532758 /bin/bash
//本机的index.html复制到容器的nginx/html目录下
docker cp index.html 179dsdl21ab://usr/share/nginx/html
//进入一个已经在运行的容器
docker exec -it 775c7c9ee1e1 /bin/bash
// containerId 是容器的ID
docker stop containerId
// 查看所有容器
docker ps -a
// 查看所有容器ID
docker ps -a -q
// stop停止所有容器
docker stop $(docker ps -a -q)
// remove删除所有容器
docker rm $(docker ps -a -q)
//查看容器所有ip
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment