目录
1、创建镜像所在文件夹和Dockerfile文件
2、创建镜像
3、根据创建好的镜像中创建容器
4、docker cp :用于容器与主机之间的数据拷贝
创建镜像【使用Dockerfile】
1、创建镜像所在文件夹和Dockerfile文件
命令:
mkdir docker
cd docker
touch Dockerfile
在Dockerfile在输入下列信息
# This is a comment
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y ruby ruby-dev vim
RUN gem install docker
#切换工作目录,进入docker后,会自动进入/home目录
WORKDIR /home
# 创建docker环境的相对文件夹
RUN mkdir -p /home/lib
RUN mkdir -p /home/SDK
RUN mkdir -p /home/code
RUN pwd
#建立 fw用户,并切换至fw用户
RUN groupadd -r fw && useradd -r -g fw fw
USER fw
格式说明:
每行命令都是以INSTRUCTION statement形式,就是命令+清单的模式。命令要大写,“#”是注解。
FROM 命令是告诉docker 我们的镜像什么。
MAINTAINER 是描述 镜像的创建人。
RUN 命令是在镜像内部执行。就是说他后面的命令应该是针对镜像可以运行的命令
Dockerfile常用命令 | |
命令 | 作用 |
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像的创建者 |
ENV key value | 设置环境变量 (可以写多条) |
RUN command | 是Dockerfile的核心部分(可以写多条) |
ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir/file dest_dir/file | 和ADD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 设置工作目录 |
EXPOSE port1 prot2 | 用来指定端口,使容器内的应用可以通过端口和外界交互 |
CMD argument | 在构建容器时使用,会被docker run 后的argument覆盖 |
ENTRYPOINT argument | 和CMD相似,但是并不会被docker run指定的参数覆盖 |
VOLUME | 将本地文件夹或者其他容器的文件挂载到容器中 |
2、创建镜像
命令: docker build -t gcs/docker_img:v1 .
docker build 是docker创建镜像的命令
-t 是标识新建的镜像属于 gcs的
docker_img是仓库的名称
:v1 是tag
“.”是用来指明 我们的使用的Dockerfile文件当前目录的
通过docker images显示此镜像已创建OK
3、根据创建好的镜像中创建容器
3.1创建容器( 并直接进入docker容器中
命令:docker run -it --name gcs.tesr-ngx gcs/docker_img:v1 /bin/bash
3.2 根据镜像创建容器,返回容器id 【需要start后才能进入容器中】
docker create gcs/docker_img:v1
# start, 容器从 Exited --> Running
docker start [docker_name|docker_id]
# stop, 容器从 Running --> Exited
docker stop [docker_name|docker_id]
# 进入容器进行操作
docker exec -it docker_name /bin/bash
# 为容器重命名
docker rename docker_name new_docker_name
# 删除容器
docker rm 容器id
# 删除镜像
docker rmi 镜像ID
4、docker cp :用于容器与主机之间的数据拷贝
4.1、从宿主机拷文件到容器里面
docker cp 本地路径 容器名或者id:容器存储路径
4.2、从容器拷文件到宿主机里面
docker cp 容器名或者id:容器路径 本地路径
以上即为基于dockerfile文件所创建的dockr镜像,