前言
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高级用法。 🐔🐧🐦🐤

欢迎关注个人微信公众号:桃李报春 个人博客:leeyunt.top
