指南
安装
docker --version
查看版本号 docker info
查看 docker 详细信息
概述
image
容器是由镜像文件加载启动的。镜像是一个可执行文件,包含运行应用程序所需要的所有资源,包括 代码,运行环境,环境变量,配置文件等。 可通过docker images
查看所有镜像
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
可通过docker pull <image:TAG>
下载镜像,不显示指定TAG
则下载latest
版本的,当使用docker run <image>
时若本地镜像没有则会自动下载远程镜像
container
容器是镜像的运行实例,容器共享宿主机的kernel
内核,独立进程运行,不占用其他任何可执行文件的内存。
部分命令
1 | # List Docker CLI commands |
容器
创建自己的容器
通过Dockerfile
定义镜像 新建一个空目录,cd
进入目录,编辑Dockerfile
文件
1 | # Use an official Python runtime as a parent image |
根据上述Dockerfile
新建requirements.txt
和app.py
1 | Flask |
1 | from flask import Flask |
执行docker build -t=friendlyhello .
等待编译完成后通过docker image ls
可查看到已经编译好的镜像
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
执行docker run -d -p 4000:80 friendlyhello
,以后台进程的方式运行容器
可通过http://localhost:4000访问首页
版本控制 docker tag image username/repository:tag
部分命令
1 | docker build -t friendlyhello . # Create image using this directory's Dockerfile |
启动容器
1 | #-p 映射端口 <宿主端口:容器端口> |
进入容器
进入容器,并以bash
作为shell
docker exec -it 6bcaf729d3d4 bash
6bcaf729d3d4
容器 id,可通过docker ps
查看
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
以 root 权限登录 sudo docker exec -ti -u root 6bcaf729d3d4 bash
删除容器
1 | docker container rm <containerID> |
服务化
下载镜像
docker pull name:tag
name
镜像名 tag
镜像版本
若速度较慢,可以配置阿里云镜像加速 镜像加速参考文档
删除镜像
docker images
查看所有镜像 dockder rmi 'image_id'
删除镜像 删除所有镜像
1 | docker rmi -f `docker images -q` |
保存镜像
当在镜像启动的容器中做了修改,比如下载了软件,做了配置等。我们可以将容器保存为镜像。 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
示例 docker commit a8eb6111cf26 li-ubuntu
后续我们就可以使用新的镜像名称来启动应用了 docker run -it li-ubuntu /bin/bash
导出镜像
1 | docker save -o update1.tar update |
加载离线镜像
1 | docker load -i update1.tar |
安装离线镜像
1 |
查看日志
1 | docker logs [OPTIONS] CONTAINER |
查看指定时间后的日志,只显示最后 100 行:
1 | docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID` |
查看最近 30 分钟的日志:
1 | docker logs --since 30m CONTAINER_ID |
查看某时间之后的日志:
1 | docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID |
查看某时间段日志:
1 | docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID |
挂载宿主目录
-v
可重复使用,指定多个目录
1 | docker run -d -p 8002:8080 -v ~/jenkins:/var/jenkins_home -v /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home:/mnt/java -v /usr/local/Cellar/maven/3.6.1:/mnt/maven -v /Users/li/.m2:/mnt/.m2 --name jenkins --restart=always jenkins/jenkins:2.138.4 |
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home:/mnt/java
挂载jdk
容器内 vim 安装
进入容器中使用vi
提示不存在
apt-get update
更新软件包管理工具,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。 apt-get install vim
安装 vi
开启ssh
登录
- 安装服务端
apt-get install openssh-server
- 启动
ssh
服务,使用命令service ssh start
或者/ect/init.d/ssh start
- 关闭
ssh
服务,service ssh stop