Docker基本操作

时间:2022-09-28 17:56:08


Docker的*仓库

Docker的*仓库,就是存放镜像的网站。

官网

镜像最全,但国内的下载速度慢

https://hub.docker.com/

Docker基本操作

国内镜像

1. 网易蜂巢

http://c.163.com/hub

2. daoCloud(推荐)

http://hub.daocloud.io/

搭建私服

1.修改注册文件

修改/etc/docker/daemon.josn文件,若文件不存在,则手动创建

添加内容如下:

{
    "registry-mirrors":["https://docker-cn.com"],
    "insecure-registries":["ip:port"] //替换相应的IP和端口即可
}

2、重启服务

systemctl daemon-reload
systemctl restart docker

Docker镜像操作

1. 拉取镜像到本地

docker pull 镜像名称[:tag]

镜像名称:这个是仓库地址;url的地址一样
tag:这个才是镜像,如果不指定那么就是latest

例如:
docker pull daocloud.io/library/tomcat:8.5.15-jre8

2. 查看全部本地的镜像

# 查看本地已经安装过的镜像信息,包含标识,名称,版本,更新时间,大小
docker images	# 列出所有镜像
docker image ls		# 列出所有镜像
docker images -q	# 只查看镜像ID
# 查看该镜像的详细信息
docker inspect [REPOSITORY][:latest] | [IMAGE ID]

# 可以格式化输出
docker inspect -f {{".Config.Image"}} hello-world


# 标签TAG区分发行版本
# docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag SOURCE_IMAGE_REPOSITORY[:TAG] TARGET_IMAGE_REPOSITORY[:TAG]

docker tag hello-world:latest hello-world:1.1.0

# 查看镜像内支持的环境变量
docker run [REPOSITORY][:TAG] | [IMAGE ID] env
例如:docker run b2cb11db9d3d env

3. 删除本地镜像

# 镜像会占用磁盘空间,可以直接手动删除,标识通过查看获取
docker rmi [REPOSITORY][:tag] | [IMAGE ID]	# 可选择标识,如果不选,默认latest

docker rmi $(docker images -q)	# 删除所有镜像

# docker images 查看到IMAGE ID

# 删除之前镜像之前,需要先删依赖该镜像的所有容器
docker ps -a	# 查看所有容器
docker rm [CONTAINER ID]	# 删除容器


# 删除依赖某个镜像的所有容器,并删除该镜像
docker ps -qa -f ancestor=nginx:1.9.5	# 查看"nginx:1.9.5"镜像ID的所有容器
docker stop $(docker ps -qa -f ancestor=nginx:1.9.5)	# 停止以"nginx:1.9.5"镜像ID的所有容器
docker rm $(docker ps -qa -f ancestor=nginx:1.9.5) # 删除以"nginx:1.9.5"镜像ID的所有容器
docker rmi nginx:1.9.5

# 查找出所有以 image 之后创建的 image 的父 image,并删除子镜像,然后删除父镜像
docker rmi $(docker image ls -q --filter since=ba6acccedd29)
docker rmi ba6acccedd29

4. 搜索镜像

# docker search [关键字]
docker search mysql

5. 镜像的导入导出(不规范)

将本地的镜像导出

docker save -o 导出的路径/自定义名字 镜像id

例如:
docker save -o /root/tomcat.image b8dfe9ade316		# b8dfe9ade316为镜像ID,可通过docker images查询

加载本地的镜像文件

docker load -i 镜像文件

例如:
docker load -i tomcat.image

重新命名镜像名称和版本

docker tag 镜像id 新镜像名称:版本

例如:
docker tag b8dfe9ade316 tomcat:8.5		
# b8dfe9ade316镜像ID ,可通过docker images查询

Docker容器操作

1.运行容器

格式

docker run [参数] [镜像名称] [运行容器的启动命令]

常用的参数

	-d : 以守护进程的方式运行一个容器(后台运行)
		docker run -d [镜像名称] [cmd]
	
	--name : 指定容器的名称
		docker run -d --name [容器名称] [镜像的名称] [cmd]
	
	-p : 指定端口映射
		docker run -d -p 宿主主机端口:容器内端口 [镜像名称] [cmd]
	
	-P :随机端口映射
		docker run -d -P [镜像名称] [cmd]
	
	-i : 打开标准输出
	
	-t : 创建一个伪终端
		docker run -it [镜像名称] [cmd]
	
	-v : 挂载目录到容器中
		docker run -v 宿主主机目录:容器内目录  [镜像名称] [cmd]
	
	--rm : 容器生命周期结束时立即删除
		docker run --rm [镜像名称] [cmd]
	
	-e : 在容器中创建一个环境变量
		docker run -e NAME=Centos -d [镜像名称] [cmd]
	
	--link : 连接上一个容器,实现网络互通
		docker run --link 被连接的容器的名称:连接别名 [镜像名称] [cmd]
	
	-h : 设置容器主机名
		docker run -h "主机名"  [镜像名称] [cmd]

实例演示

docker run -d -p宿主机端口∶容器端口 --name 容器名称 镜像的标识镜像名称[:tag]

Docker基本操作

Docker基本操作

docker run 运行流程

  1. 检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
  2. 启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
  3. 返回容器ID

2.查看正在运行的容器

docker ps # 查看当前系统中正在运行的容器列表

docker ps [参数]

参数:

  • -a:查看系统全部的容器,包括没有运行的
  • -q:只显示容器id

Docker基本操作

3. 查看容器日志

docker logs -f 容器id

参数:

  • -f:可以滚动查看日志的最后几行

4. 查看容器内容

# 格式
	docker inspect [容器名称|ID]

5. 进入容器内部

进入容器一般有四种:

  1. exec : 在容器外向容器内执行一个命令(官方推荐

    docker exec -it 容器id /bash
    
  2. attach : 在早期docker提供的进入容器的命令(缺点:当其结束时,容器也跟着结束了

    docker attach [容器ID|名称]
    
  3. nsenter : 建立一个管道连接上容器主ID

    nsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid
    
  4. ssh : 通过ssh连接

实例演示:

Docker基本操作

6. 停止和启动一个容器

停止指定容器:

docker stop 容器id

停止全部容器:

docker stop $(docker ps -qa) 

启动(该容器必须是系统已经存在的容器)

docker start 容器id

7. 删除容器

删除容器前需要先停止容器

删除指定容器:

docker rm 容器id

删除全部容器:

docker rm $(docker ps -qa)  

强制删除指定容器:

docker rm -f 容器id

Docker基本操作