docker的使用
一、安装和配置
-
安装docker
sudo apt-get install docker-io
-
配置用户组
sudo usermod -aG docker USER_NAME
:避免每次使用特权身份,重新登录生效 -
查看docker信息
docker info
-
启动和关闭docker服务
sudo service docker restart
: 重启docker服务sudo service docker stop
: 关闭docker服务
二、镜像(image)
-
获取镜像
docker pull NAME[:TAG]
: NAME表示镜像名称,TAG表示标签(通常是版本号)docker pull ubuntu:14.04
: 下载ubuntu 14.04 dockerdocker pull ubuntu
: 没有指定标签,则下载最新,相当于ubuntu:latestdocker pull hub.c.163.com/public/ubuntu:14.04
: 指定路径下载镜像
-
列出所有镜像
docker images
: 列出镜像信息$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 4a689991aa24 11 days ago 116 MB ubuntu latest ea4c82dcd15a 11 days ago 85.8 MB hub.c.163.com/public/ubuntu 14.04 2fe5c4bba1f9 2 years ago 237 MB
docker images -q
: 列出images id,通过该命令可以实现各种批量操作 -
对镜像添加标签,同时也起到类似软链接的作用
docker tag ubuntu:16.04 myubuntu:16.04
-
查看某个镜像的详细信息
docker inspect ubuntu:16.04
-
查看某个镜像的创建历史
docker history ubuntu:16.04
-
删除镜像
docker rmi myubuntu:latest
: 删除某个镜像,如果image id存在多个,则只是删除一个标签docker rmi 4a68999
: 删除image id为4a68999xxxx的所有镜像docker rmi -f ubuntu:14.04
: 强制删除某个镜像,如果存在容器使用该镜像时正常删除会报错docker rmi -f ${docker images -q}
: 强制删除所有镜像 -
存储镜像和载入镜像
docker save -o ubuntu_14.04.tar ubuntu:14.04
: 存储镜像docker load < ubuntu_14.04.tar
: 导入镜像docker load --input ubuntu_14.04.tar
-
镜像上传到docker hub
docker push 注册用户名/镜像名称
三、创建镜像
基于已有镜像的容器创建
-
启动镜像,修改后退出,如下:
$ docker run -it ubuntu:16.04 /bin/bash root@19e28671fe8d:/# touch test root@19e28671fe8d:/# exit exit $
-
提交镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY:TAG]
docker commit -m "Add test file" -a "Docker Newbee" 19e28671fe8d mydocker:0.1
-m, --message=
: 提交的消息记录-a, --author=
: 作者
基于本地模板导入
下载模板压缩包,然后导入,如下:
cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
使用Dockerfile创建镜像
创建Dockerfile文件,然后使用docker build
命令生成镜像
四、容器(container)
基本命令
-
查看容器
docker ps
: 查看运行中的容器docker ps -a
: 查看所有容器,包括没有运行的docker ps -q
: 查看运行中容器的CONTAINER_ID
-
创建容器
docker create -it ubuntu:16.04
-i
: 保持标准输入打开-t
: 分配伪终端-d
: 后台运行docker--name
: 指定容器的别名--rm
: 容器退出后自动删除--privileged
: 特权执行 -
启动容器
docker start CONTAINER_ID|NAME
: 通过id或者name,启动容器;创建的容器或者终止的容器都可以startdocker restart CONTAINER_ID|NAME
: 终止并启动容器 -
创建并启动容器
docker run -it ubuntu:14.04
: 进入容器,进行交互-
docker run ubuntu:14.04 /bin/echo hello world
: 在docker中运行程序后自动终止 -
docker run -d ubuntu /bin/sh -C "while true; do echo hello; done"
: 后台运行docker
-
-
读取容器的输出信息
docker logs CONTAINER_ID|NAME
-
终止容器
docker stop CONTAINER_DI|NAME
: 终止容器docker stop ${docker ps -q}
: 终止所有运行中的容器 -
进入容器
docker attach CONTAINER_ID|NAME
: 进入容器,可以进入一个正在运行的容器docker exec -it CONTAINER_ID|NAME /bin/bash
: 进入容器,并执行bash终端 -
退出容器
在容器内执行exit,退出且终止容器,按CTRL+D同效果;按CTRL+Q+P,退出但不终止容器
-
删除容器
docker rm CONTAINER_ID|NAME
: 删除退出或终止的容器,运行中的容器加-f
强制删除docker rm -f ${docker ps -aq}
: 删除所有容器 -
导出容器和导入容器 (这里与镜像类似,但没有历史记录,体积较小)
docker export -o mycontainer.tar CONTAINER_ID|NAME
: 导出容器
docker import mycontainer.tar - test/ubuntu:0.01
: 导入容器
数据管理
-
创建数据卷
docker run -it -v /dbdata --name dbdata ubuntu
: 创建/dbdata数据卷docker run -it -v /home/tmp:/tmp ubuntu:14.04
: 前者是本地目录,后者是映射到容器的数据卷 -
数据卷共享
docker run -it --volumes-from dbdata --name mydb ubuntu
: 共享访问dbdata中的数据卷 -
删除数据卷
docker rm -v dbdata
: 删除容器,及其数据卷;没有-v
参数,数据卷不会被删除 -
备份数据卷
docker run --volume-from dbdata -v $(pwd):/backup --name worker ubuntu:14.04 tar cvf /backup/backup.tar /dbdata
五、仓库 (Repository)
- Docker官方仓库:https://hub.docker.com
docker search ubuntu
: 搜寻仓库中的镜像,ubuntu是搜寻关键字docker pull index.tenxcloud.com/<namespace>/<repository>:<tag>
: 指定服务器下载镜像
六、命令汇总图(来自网络)
该图来自网络,非常精炼,故贴在此处。