【Docker入门学习】(三) 镜像和容器常用命令
一、镜像操作
1.搜索镜像
可以直接在Docker Hub 直接搜索镜像,当然也可以使用命令来搜索。
docker search 名称
docker search tomcat
2.拉取镜像
docker pull 镜像名
#拉取redis3.0
docker pull redis:3.0
3.查看镜像列表
Docker镜像保存在/var/lib/docker
docker images docker images -a docker images -q(显示id)
4.删除镜像
docker rmi 镜像名
#删除hello-world镜像 docker rmi hello-world #强制删除有容器依赖的镜像 docker rmi -f hello-world
二、容器操作
1.创建容器
①docker create
可以先通过docker create创建容器,再通过docker start启动
②docker run
创建并启动容器(运行时容器)
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[OPTIONS]:
- -d: 后台运行容器,并返回容器ID;
- --name="xx": 为容器指定一个名称;
- -i:以交互模式运行容器,通常与 -t 同时使用;
- -t:为容器分配虚拟终端,允许发信号给容器。tty
- -P: 随机端口映射;
- -p: 指定端口映射,有以下四种格式
例子:
# 基于最新版redis镜像创建容器,命名为myredis,将主机的16379端口映射到容器内的6379端口。 docker create --name myredis -p 16379:6379 redis:latest
2.列出容器
docker ps [OPTIONS]
[OPTIONS]:
- -a:显示所有容器,包括未运行的
- -l:显示最近创建的容器
- -n:显示最近创建的n各容器
3.启动/停止/重启容器
docker start 容器ID/容器名 docker stop 容器ID/容器名 docker restart 容器ID/容器名
4.删除容器
#删除容器 docker rm 容器ID/容器名 #强制删除运行中的容器 docker rm -f 容器ID/容器名
- -f :强制删除运行中的容器
- -l :移除容器间的网络连接,而非容器本身
- -v :删除与容器关联的卷
5.在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
例子:
#进入到redis容器中,并开启一个交互模式的终端 docker exec -it redis /bin/bash #在容器mynginx中以交互模式执行容器内/root/runoob.sh脚本 docker exec -it mynginx /bin/sh /root/runoob.sh
使用ctrl + d退出容器
6.查看容器的日志
docker logs 容器
Options:
- -f, 跟踪日志输出
- -t, 显示时间戳
docker logs -f redis
三、上传镜像到阿里云镜像仓库
可以将本地镜像上传到Docker Hub上,也可以上传到其它服务器,例如阿里云镜像仓库。上传到hub上太慢了,这里选择上传到阿里云镜像仓库中。
可以参考阿里云官网的教程:上传本地镜像
1.先要有阿里云账号,登录容器镜像服务控制台。
2.设置阿里云 Docker registry 登录密码
如果是首次访问,系统会提示您进行初始化设置。设置您的登录密码,并单击确定。
3.创建命名空间。
4.创建镜像仓库。
接下来可以进入管理,查看具体的操作指南
5.执行Docker登录命令,并输入密码。
sudo docker login --username=阿里云用户名 registry.cn-beijing.aliyuncs.com
6.重命名镜像。
- 如果您本地的镜像是通过构建生成的,构建过程中需要指定 tag 信息。
$ sudo docker tag [镜像id] registry.cn-beijing.aliyuncs.com/命名空间/仓库:[镜像版本号]
- 如果您本地的镜像是从其它仓库下载的,已有了 registry 名、命令空间、仓库名和 tag 名称,上传到阿里云 registry 之前需要执行 Docker tag 命令进行修改。
[root@localhost application]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 4ab4c602aa5e 2 months ago 1.84kB [root@localhost application]# sudo docker tag 4ab4c602aa5e registry.cn-hangzhou.aliyuncs.com/lp_namespace/helloworld:helloworld-1.0
7.上传镜像到阿里云 Docker registry。
sudo docker push registry.cn-hangzhou.aliyuncs.com/lp_namespace/helloworld:helloworld-1.0
8. 从Registry中拉取镜像
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/lp_namespace/helloworld:hello-world-1.0
更多详情请参考阿里云官网的教程:上传本地镜像
不积跬步,无以至千里。不积小流,无以成江海!