前言
Docker 容器和镜像操作,记录下来!
容器
- 创建一个新的容器(ubuntu)并启动
$ docker run -dit --name ubuntu ubuntu
- 在容器内执行命令(容器在后台启动),用
docker exec
命令
$ docker exec -it ubuntu bash
注意:使用
exit
命令退出在容器内执行命令。
- 查看容器详细信息
& docker inspect ubuntu
包括容器的ID、容器名、环境变量、运行命令、主机配置、网络配置等。
使用 -f
参数可以查看用户关心的数据:
- 查看容器运行状态:
docker inspect -f='{{.State.Running}}' ubuntu
- 查看容器ip地址:
docker inspect -f='{{.NetworkSettings.IPAddress}}' ubuntu
- 查看容器名、容器id:
docker inspect -f='{{.Name}} {{.ID}}' ubuntu
- 查看容器的进程
$ docker top ubuntu
容器导出
- 使用
export
命令可以导出容器
$ docker export nginx > ./docker/nginx.tar
该命令将nginx容器导入到docker目录下。
容器导入
- 使用
import
命令导入容器
$ cat nginx.tar | docker import - importednginx:ilatest
镜像
镜像和容器的关系就像是程序和进程的关系,镜像扮演的角色就是容器的模板,不同镜像可以构建不同的容器。
本地镜像管理
- 执行
docker run
再去下载会比较慢,可以先执行docker pull
将镜像先下载下来,再运行。
$ docker pull hub.c.163.com/library/nginx:latest
- 由下载下来的镜像来构建容器
$ docker run -itd --name 163nginx -p 80:80 hub.c.163.com/library/nginx:latest
- 删除镜像
docker rmi
$ docker rmi 镜像ID/镜像名
有的时候,无法删除一个镜像,大部分原因是因为该镜像被一个容器所依赖,此时需要先删除容器,然后就可以删除镜像了。
创建本地镜像
- 根据已有容器创建一个本地镜像:
commit
命令
$ docker commit -m "update index.html" --author='leeyunt' 13af96130e40 leeyunt/nginx:v1
命令解释:
- 参数
-m
是对创建的该镜像的一个简单描述。 -
--author
表示该镜像的作者。 -
13af96130e40
表示创建镜像所依据的容器的id
。 -
leeyunt/nginx
则表示仓库名,leeyunt
是名称空间,nginx
是镜像名。 -
v1
表示仓库的tag。 - 创建完成后,通过
docker images
命令就可以查看到刚刚创建的镜像。 - 通过刚刚创建的镜像运行一个容器,访问该容器,发现nginx默认的首页已经发生改变。
- 根据Dockerfile文件构建镜像
- 新建一个名为Dockerfile的文件,内容如下:
FROM nginx
MAINTAINER leeyunt "leeyunt@outlook.com"
RUN echo 'hello docker!'>/usr/share/nginx/html/index.html
COPY ./hello.html /usr/share/nginx/html/
解释:
- FROM nginx表示该镜像的构建,以已有的nginx镜像为基础,在该镜像的基础上构建。
- MAINTAINER指令用来声明创建镜像的作者信息以及邮箱信息,这个命令不是必须的。
- RUN指令用来修改镜像,算是使用比较频繁的一个指令了,该指令可以用来安装程序、安装库以及配置应用程序等,一个RUN指令执行会在当前镜像的基础上创建一个新的镜像层,接下来的指令将在这个新的镜像层上执行,RUN语句有两种不同的形式:shell格式和exec格式。本案例采用的shell格式,shell 格式就像linux命令一样,exec格式则是一个JSON数组,将命令放到数组中即可。在使用RUN命令时,适当的时候可以将多个RUN命令合并成一个,这样可以避免在创建镜像时创建过多的层。
- COPY语句则是将镜像上下文中的hello.html文件拷贝到镜像中。
- 文件创建完成后,执行如下命令进行构建:
$ docker build -t leeyunt/nginx:v1 .
命令解释:
-
-t
参数用来指定镜像的命名空间,仓库名以及TAG等信息。 - 最后面的
.
是指镜像构建上下文。
将镜像上传到Docker Hub
- 通过
docker push
命令
$ docker push leeyunt/nginx:v1
上传成功后,用户登录 Docker Hub,就可以看到刚刚的镜像已经上传成功了。
最后
下期学习Docker高级用法。
今日寄语:
“昨天下了雨,今天刮了风,明天太阳就出来了 ️”
桃李报春