名词解析
- 容器
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID 空间。容器内的进程是运行在一个隔离的环境里。 - 镜像(Image)
封装了应用程序及其依赖的“包”。 - 仓库(Repository)
就好像软件包上传下载站,是存放镜像的地方。
Linux安装启动命令
sudo apt install curl
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
sudo systemctl enable docker
sudo systemctl start docker
sudo apt-get install -y docker.io
sudo service docker start
基本操作
- 下载镜像
使用 docker pull 命令来从仓库获取所需要的镜像
1.1 docker pull很慢的解决办法
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.12:5000"]
}
- 构建镜像
构建Docker镜像有以下两种方法:
• 使用docker commit命令。
• 使用docker build命令和 Dockerfile 文件。
Dockerfile指令
1、 FROM
格式:FROM <image>或 FROM <image>:<tag>
第一条指令必须为FROM指令,并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)
2、 MAINTAINET
格式:MAINTAINET <name> 指定维护者的信息
3、 RUN
格式:RUN <command> 或 RUN ["", "", ""]
每条指令将在当前镜像基础上执行,并提交为新的镜像。(可以用“\”换行)
4、 CMD
格式:CMD ["","",""]
指定启动容器时执行的命令,每个Dockerfile只能有一条CMD指令,如果指定了多条指令,则最后一条执行。
5、EXPOSE
告诉Docker服务端暴露端口,在容器启动时需要通过 -p 做端口映射
6、ENV
格式:ENV <key> <value> 指定环境变量,会被RUN指令使用,并在容器运行时保存
7、ADD
格式:ADD <src> <dest>
复制指定的<src>到容器的<dest>中,<src>可以是Dockerfile所在的目录的一个相对路径;
可以是URL,也可以是tar.gz(自动解压)
8、COPY
格式:COPY <src> <dest>
复制本地主机的 <src> ( 为 Dockerfile 所在目录的相对路径)到容器中的 <dest>
9、ENTRYPOINT
格式:ENTRYPOINT ["","",""]
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。
(每个 Dockerfile 中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效)
创建完成Dockerfile文件,如下
FROM ubuntu:latest
MAINTAINER jarven "[email protected]"
RUN apt-get update -y
RUN apt-get install \
build-essential pkg-config libc6-dev m4 g++-multilib \
autoconf libtool ncurses-dev unzip git python python-zmq \
zlib1g-dev wget curl bsdmainutils automake -y
# RUN git clone https://github.com/zcash/zcash.git
EXPOSE 8080
然后执行命令docker build来构建镜像
另一种方式:
- 先下载ubuntu系统
- 再安装各种环境
这里是下载了一个基本的镜像文件,安装了一些依赖库(ZEC),但是还不够,还需要下载一些别的东西 - 创建一个容器
docker run -i -t -p 80:8080 start1 /bin/bash
运行此命令后会进入容器,然后下载
删除命令
删除镜像时,如果其被容器依赖,先要停掉容器。还有镜像文件有子镜像文件,需要先删除子镜像。
Docker的存放路径
默认情况下docker的存放位置为: /var/lib/docker
基本命令
- 查看所有容器
sudo docker ps –a - 查看镜像
sudo docker images - 关闭并删除
docker stop 容器ID
docker ps -a
docker rm 容器ID
-
重新启动容器
docker run -dt -p 8000:7000 centos/java8 /bin/bash -
docker -g /home/work/image 使用-g参数指定 存放位置 ???
-
提交容器为镜像
docker commit 容器ID 镜像名称 -
推送到docker hub上面,先登录再推送
sudo docker login
sudo docker push
实现与docker的通信
待续…