-
-
Save jingmian/8b5f8ae84d8a6baebd90ee041c2d3078 to your computer and use it in GitHub Desktop.
Docker安装
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/docker.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