核心概念与安装配置
安装Docker引擎
Ubuntu环境下安装Docker
1.系统要求
推荐使用Ubuntu 16.04LTS或18.04LTS
查看内核版本详细信息
1 | uname -a |
如果是Ubuntu 16.04LTS版本,为了让Docker使用aufs存储,推荐安装如下两个软件包:
1 | sudo apt-get update |
2.添加镜像源
1 | sudo apt-get update |
添加源的gpg密钥:
1 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
确认导入指纹为9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
的公钥:
1 | sudo apt-key fingerprint 0EBFCD88 |
pub 4096R/0EBFCD88 2017-02-22
key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
获取当前操作系统的代号:
1 | lsb_release -cs |
Ubuntu 16.04LTS代号为xenial, Ubuntu 18.04LTS代号为bionic。
添加Docker稳定版的官方软件源
1 | sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" |
再次更新apt软件包缓存
1 | sudo apt-get update |
3.开始安装Docker
1 | sudo apt-get install -y docker-ce |
配置服务
为了避免每次使用Docker命令时都需要切换到特权身份,可以将当前用户加入安装中自动创建的docker用户组:
1 | sudo usermod -aG docker USER_NAME |
修改皮质文件/etc/default/docker
:
其中镜像代理使用腾讯云代理,只允许腾讯云网络使用,这里使用腾讯云服务器,所以可以使用。
1 | DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --registry-mirror=https://mirror.ccs.tencentyun.com" |
1 | service docker start |
更新配置后需要重启服务:
1 | sudo systemctl daemon-reload |
docker info
查看服务是否正常运行.
使用Docker镜像
获取镜像
下载镜像
1 | docker pull ubuntu:18.04 |
利用镜像创建容器
1 | docker run -it ubuntu:18.04 bash |
查看镜像信息
1 | docker images |
搜寻镜像
1 | docker search --filter=is-official=true nginx |
删除和清理镜像
1 | docker rmi ubuntu:18.04 |
创建镜像
基于已有容器创建
docker [container] commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
命令
-a, --author=""
:作者信息;-c, --change=[]
:提交的时候执行Dockerfile指令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBULLD|USER|VOLUME|WORKDIR
等;-m, --message=""
:提交消息;-p, --pause=true
:提交时暂停容器运行。1
2
3
4
5
6
7
8
9docker run -it ubuntu:18.04 /bin/bash
touch test
exit
docker container commit -m "Added a new file" -a "Docker Newbee" ad0cd4773b2a test:0.1 # 创建镜像
docker images # 查看本地镜像列表
基于本地模板导入
1 | cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04 |
基于Dockerfile创建
Dockerfile
:
1 | FROM debian:stretch-slim |
创建一个名为Python:3的镜像,注意这个末尾的 .。
1 | docker [image] build -t python:3 . |
存出和载入镜像
1.存出镜像
将镜像导出到本地文件:
1 | docker save -o python.tar python:3 |
之后,用户就可以通过复制python.tar文件将该镜像分享给他人。
2.载入镜像
1 | docker load -i python.tar |
上传镜像
1 | docker push python:3 |
第一次上传时,需要输入登录信息或者进行注册,之后登录信息会记录到本地~/.docker
目录下。
操作Docker容器
容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态。
创建、启动容器
1 | docker create ubuntu:latest # 创建容器,创建后,容器处于静止状态 |
1 | docker run ubuntu /bin/echo 'Hello world' # 运行输出后,容器自动终止,相当于create 后 start容器 |
1 | docker run -it ubuntu:18.04 /bin/bash # 启动一个bash终端,允许用户进行交互,-t表示让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则是让容器的标准输入保持打开。 |
1 | docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" # 守护态后台运行 |
暂停、停止容器
1 | docker run --name test --rm -itd ubuntu bash # -d表示后台运行 |
进入容器
attach
1 | docker run -itd ubuntu |
exec
1 | docker exec -it f8 /bin/bash |
删除容器
1 | docker ps -a # 查看处于终止状态或退出状态的容器 |
导入和导出容器
导出容器
导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态。
1 | docker ps -a |
- 实际上,既可以使用
docker load
命令来导入镜像存储文件到本地镜像库,也可以使用docker import
命令来导入一个容器快照到本地镜像库; - 区别在于:容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态,而镜像存储文件将保存完整记录,体积更大;
- 此外,从容器快照文件导入时可以重新指定标签等元数据信息。
查看容器
1 | docker container inspect test # 查看某容器的具体信息 |
其他容器命令
1 | docker cp data test:/tmp/ # 将本地的路径data复制到test容器的/tmp路径下 |