一、docker安装

# 首先安装 Docker
yum -y install docker
 
# 然后启动 Docker 服务
service docker start
 
# 测试安装是否成功
docker -v
    
# 配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://******.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 

二、容器基本操作

1.查看容器

#查看正在运行容器 
docker ps 
#查看所有容器 
docker ps -a 
#查看最新创建的容器 
docker ps -l 

2.创建容器

#创建容器 
docker create 镜像 
--创建一个 nginx 容器:
docker create nginx 
--指定容器的name为nginx:
docker create --name=nginx nginx 

#创建并启动一个容器 
docker run 镜像 

docker run --name nginx1 -d -p 8080:80 nginx 

--name 含义和上文一样,表示创建的容器的名字,
-d 表示容器在后台运行,
-p 表示将容器的 80 端口映射到宿主机的 8080 端口 

3.启动关闭容器

#启动容器 
docker start id|name 

#重启容器 
docker restart id|name 
#关闭容器 
docker stop id|name 

4.删除容器

#单个删除 
docker rm id|name 

#批量删除 
docker rm $(docker ps -a -q) 

5.查看容器信息、日记

#容器详情 
docker inspect id|name 

#查看容器进程 
docker top 

#查看你容器日记 
docker logs id|name 
-f :实时日记 
-t : 显示时间 
-tail: 控制输出行数 

6.容器导入导出

#导出一个已经创建的容器导到一个文件 
docker export -o 文件名.tar 容器id 
#将文件导入为镜像 
docker import 文件名.tar 镜像名:镜像标签 

docker export -o image-test.tar 1ffcd3e4a201

三、镜像的基本操作

1.查看所有镜像

docker images 

  1. TAG: TAG用于区分同一仓库中的不同镜像,默认为latest。
  2. IMAGE ID: IMAGE ID是镜像的一个唯一标识符。
  3. CREATED: CREATED表示镜像的创建时间。
  4. SIZE: SIZE表示镜像的大小。
  5. REPOSITORY:仓库名称,仓库一般用来存放同一类型的镜像。仓库的名称由其创建者指定。如果没有指定则为<none>

2.搜索镜像

docker search name

3.下载镜像

docker pull name:版本

版本可以在Docker hub上查看

4.删除镜像

docker rmi id|name

四、Dockerfile

Dockerfile是用来构建docker镜像的构建文件。

其实Dockerfile就是一个普通的文本文件,其中包含了一条条的指令,每一条指令都会构建一层。

dockerfile指令

FROM 		#基础镜像,一切从这里开始构建
MAINTAINER	#镜像是谁写的,姓名+邮箱
RUN			#镜像构建时需要运行的命令
ADD			#步骤,tomcat镜像,这个tomcat压缩包;添加内容
WORKDIR		#镜像工作目录
VOLUME		#挂载的目录
EXPOSE		#暴露端口配置
CMD			#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	#指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD		#当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY		#类似ADD,将我们的文件拷贝至镜像中
ENV			#构建的时候设置环境变量

1. FROM nginx 表示该镜像的构建,以已有的 nginx 镜像为基础,在该镜像的基础上构建。

2. MAINTAINER 指令用来声明创建镜像的作者信息以及邮箱信息,这个命令不是必须的。

3. RUN 指令用来修改镜像,算是使用比较频繁的一个指令了,该指令可以用来安装程序、安装库以及配置应用程序等,一个 RUN 指令执行会在当前镜像的基础上创建一个新的镜像层,接下来的指令将在这个新的镜像层上执行,RUN 语句有两种不同的形式:shell 格式和 exec 格式。本案例采用的 shell 格式,shell 格式就像 linux 命令一样,exec 格式则是一个 JSON 数组,将命令放到数组中即可。在使用 RUN 命令时,适当的时候可以将多个 RUN 命令合并成一个,这样可以避免在创建镜像时创建过多的层。

4. COPY 语句则是将镜像上下文中的 hello.html 文件拷贝到镜像中。

命令解释:

1. -t 参数用来指定镜像的命名空间,仓库名以及 TAG 等信息。

2. 最后面的 . 是指镜像构建上下文。

五、本地打包docker镜像

编写Dockerfile文件

# 基础镜像使用java
FROM java:8
 
# 作者
MAINTAINER CJC
 
# 将jar包添加到容器中并更名为: hello-docker-image.jar
ADD docker-image-test-0.0.1-SNAPSHOT.jar hello-docker-image.jar
 
# 运行jar包
RUN bash -c 'touch hello-docker-image.jar'
ENTRYPOINT ["java","-jar","hello-docker-image.jar"]
 
# 暴露端口
EXPOSE 8080

将jar包和dockerfile文件置于同一目录下执行命令,构建镜像:

docker build -t Name:TagName .
 
> build -t hello-docker-image:V1.0 .
 
-t参数指定构建成后,镜像的仓库、标签等,
Name 给镜像取的名字
TagName 给镜像取的标签
最后的 .  表示 Dockerfile 文件在当前目录下 

查看镜像:docker images

创建并启动容器:docker run -d -p 8080:8080 6e7772b68332

docker数据卷操作

一般情况下,当我们需要将数据从宿主机拷贝到容器中使用的都是docker的拷贝命令。数据卷可以避免这种麻烦的操作。

数据卷可以实现容器和宿主机之间的数据共享,简单来说数据卷就是在宿主机和容器之间搭建的一个映射的工作区,两者可以同步修改。

docker run -itd --name nginx -v /Users/sang/blog/docker/docker/:/usr/share/nginx/html/ -p 80:80 bc26f1ed35cf

这样便是将宿主机中的 /Users/sang/blog/docker/docker/ 目录挂载到容器的 /usr/share/nginx/html/ 目录下。接下来读者只需要在 /Users/sang/blog/docker/docker/ 目录下添加 html 文件,或者修改 html 文件,都能在 nginx 访问中立马看到效果。

查看所有的数据卷:

docker volume ls

查看数据卷详情

docker volume inspect

删除数据卷

docker volume rm