Run
基于镜像新建一个容器并运行
# docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run -it ubuntu:18.04 /bin/bash
-t 启动一个伪终端
-i 打开容器的标准输入
ubuntu:18.04 镜像
/bin/bash 在镜像中执行的命令
其他常用参数
-d 后台任务运行
-p 8081(主机):8081 建立主机与容器的端口映射
-v $PWD/website:/var/www/html/website 将文件夹挂在到容器内部 本地:容器路径:rw(ro)
--name hahah 给新容器命名
--rm 退出之后就删除容器
--log-driver="syslog" # 设置日志驱动, 默认json-file
--restart=always # 容器自动重启 --restart=on-failure:5
-e 传递环境变量
管理
Container
docker stop containerId/name # 暂停容器
docker start containerId/name # 启动容器
docker kill CONTAINER # 发送SIGKILL
查看容器
docker container ls # 查看现在正常运行的容器
-a # 查看所有容器, 包括已经停止的容器
删除容器
docker rm CONTARINER
# 删除全部容器
docker rm `docker ps -a -q`
images
镜像, 镜像存储位置 /var/lib/docker/docker
docker images # 查看镜像列表
# 拉取用户镜像需要带上用户名 gilf/httpd , 顶层镜像只需镜像名 ubuntu
# 删除镜像
docker rmi IMAGE
# 删除全部镜像
docker rmi `docker images -a -q`
docker pull NAME[:TAG|@DIGEST] # 拉取镜像
docker search NAME # 查看所有Docker Hub上的公共镜像
提交容器的变更到镜像
docker commit $容器名 $仓库镜像名[:Tag]
-m 提交消息
-a 作者名称
docker commit 4aab3ce3cb76 jamtur01/apache2
docker push [OPTIONS] NAME[:TAG]
# 将变更推送到hub上
构建镜像
- Dockfile
# Version: 0.0.1
FROM ubuntu:14.04 # 每个Dockerfile 第一条指令必须是FROM, 基础镜像
MAINTAINER James Turnbull "james@example.com"
RUN apt-get update && apt-get install -y nginx # Run 默认用 /bin/sh -c 执行
RUN echo 'Hi, I am in your container'
>/usr/share/nginx/html/index.html
EXPOSE 80
###
使用 exce格式的run命令
RUN ["apt-get", " install", "-y" "nginx"]
dockerfile
2. build
# 进入Dockerfile所在的文件夹
docker build -t="gilf/httpd:v1"
-t 为新镜像设置仓库和名称, 版本可以省略(默认latest)
-f 可以指定dockerfile文件
# 使用远程github的 dockerfile,
docker build -t="gilf/httpd:v1"
git@github.com:gilf/httpd-dir
docker build --no-cache
# 不使用构建过程中的缓存镜像
# 查看构建历史镜像层
docker history $镜像名称
交互
attach
docker attch container # 将当前终端的标准io连上容器的标准io
exec
在容器内部额外启动新进程, 执行命令
docker exec [options] CONTAINER COMMANDS
-d # 后台任务
-i -t # 交互任务
查看日志
docker logs # 查看容器内部的日志
# docker logs 显示的内容包含 STOUT 和 STDERR
# --tail 10 # 获取末尾10行
# -f # 关注最新的日志
查看容器
# 查看容器内部进程
docker top CONTAINER
# 查看各个容器的CPU, 内存, 网络I/O的使用情况
docker starts CONTAINER1 CONTAINER2 ...
# 检查容器配置信息
docker inspect CONTAINER
# 查看容器映射的端口
docker port $容器 80
文件转移
# 从容器中拷贝文件到本地, 或者拷贝文件到容器中
docker cp CONTAINER:SRC_PATH DEST_PATH
# docker cp bob:/home/world.md .
# docker cp ./hello.md bob:/home/
其他
登陆 Registry 服务器
docker login
docker logout
# $HOME/.docker/config.json 登入信息
Referrence
- 第一本Docker书