Docker
docker
安裝docker
sudo curl -sSL get.docker.com | sh
获取镜像 运行 列出镜像
docker pull ubuntu:18.04
# -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端
# --rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
# bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash
docker run -it --rm ubuntu:18.04 bash
# 这条命令会用 nginx 镜像启动一个容器,命名为 webserver,并且映射了 80 端口,这样我们可以用浏览器去访问这个 nginx 服务器。
docker run --name webserver -d -p 80:80 nginx
sudo docker start webserver
# 我们可以使用 docker exec 命令进入容器,修改其内容。
# 我们以交互式终端方式进入 webserver 容器,并执行了 bash 命令,也就是获得一个可操作的 Shell。
# 然后,我们用 <h1>Hello, Docker!</h1> 覆盖了 /usr/share/nginx/html/index.html 的内容
docker exec -it webserver bash
# 我们修改了容器的文件,也就是改动了容器的存储层。我们可以通过 docker diff 命令看到具体的改动。
docker diff webserver
# 要知道,当我们运行一个容器的时候(如果不使用卷的话),我们做的任何文件修改都会被记录于容器存储层里。而 Docker 提供了一个 docker commit 命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化
# docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
docker commit \
--author "Tao Wang <twang2218@gmail.com>" \
--message "修改了默认网页" \
webserver \
nginx:v2
# 我们还可以用 docker history 具体查看镜像内的历史记录
docker history nginx:v2
# 列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。
# 你可以通过 docker system df 命令来便捷的查看镜像、容器、数据卷所占用的空间。
docker image ls
# 一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除
docker image prune
# 中间层镜像
# 默认的 docker image ls 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数
docker image ls -a
# 删除本地镜像
# 《名字》可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。
docker image rm 《名字》
挂载一个主机目录作为数据卷
# 加载主机的 /src/webapp 目录到容器的 /usr/share/nginx/html目录
docker run -d -P \
--name web \
# -v /src/webapp:/usr/share/nginx/html \
--mount type=bind,source=/src/webapp,target=/usr/share/nginx/html \
nginx:alpine
# 查看数据卷的具体信息
docker inspect web
# rust
sudo docker run -it --mount type=bind,source=/home/test/rust,target=/home/rust -w="/home/rust" rust bash
# ruby
sudo docker run -it --mount type=bind,source=`pwd`,target=/home -w="/home" ruby bash
容器
# 终止状态的容器可以用 docker container ls -a 命令看到
docker container ls -a
# 处于终止状态的容器,可以通过 docker container start 命令来重新启动。
# docker container restart 命令会将一个运行态的容器终止,然后再重新启动它
docker-compose 安装
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
mkdir qinglong
wget https://raw.githubusercontent.com/whyour/qinglong/master/docker-compose.yml
# 启动
docker-compose up -d
# 停止
docker-compose down
Ref
https://yeasy.gitbook.io/docker_practice/image/pull