Docker文档

Docker文档

  • docker安装

    sudo apt-get install docker-ce -y
    
  • docker卸载

    rm -rf /var/lib/docker/
    rm -rf /etc/docker
    
  • docker目录

    /etc/docker/				docker的认证目录
    /var/lib/docker/			docker的应用目录
    /var/lib/docker/image/overlay2/imagedb/content/sha256  存放Docker镜像的目录
    
  • 查看docker服务

    systemctl status docker
    systemctl restart docker
    systemctl stop docker
    systemctl start docker
    
  • 由于docker受国内影响网速比较慢,推荐docker加速

    1.curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
    2.vim /etc/docker/daemon.json
    3.{"registry-mirrors": ["http://f1361db2.m.daocloud.io"], "insecure-registries": []}
    4.systemctl restart docker
    

Docker仓库

docker login [仓库名称]
docker pull [镜像名称]
docker push [镜像名称]
docker search [镜像名称]

镜像相关命令

# 搜索镜像:
docker search [image_name] 
例如:docker search ubuntu

# 获取镜像:
docker pull [image_name] 
例如:docker pull ubuntu

# 列出所有的本地的images(包括已删除的镜像记录): 
docker images -a

# 查看镜像历史:
docker history [image_name]

# 查看docker镜像
docker images
docker image ls

# 镜像重命名: 
docker tag [old_image]:[old_version] [new_image]:[new_version]
例如:docker tag hello-world:latest hellow-world:v1.0 

# 删除镜像—1:
docker rmi [image_id/image_name:image_version]
例如:sudo docker rmi hello-world:v1.0
# 删除镜像-2:
docker image rm [image_id/image_name:image_version]
例如:sudo docker image rm hello-world:v1.0
注意:如果一个image_id存在多个名称,那么应该使用name:tag的格式删除镜像

# 清除状态为dangling的镜像:
docker image prune

# 移除所有未被使用的镜像:
docker image prune -a

# 删除部分镜像:
docker image prune -a --filter "until=24h"

# 只查看镜像id
docker images -q

# 格式化显示镜像
# 这是docker的模板语言
docker images --format "{{.ID}}--{{.Repository}}"

# 以表格形式显示、美化
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

# 导出镜像:
docker save -o [包文件] [镜像]
docker save [镜像1] ... [镜像n] > [包文件]
例如:docker save -o hello-world.tar hello-world
注意:docker save 会保存镜像的所有历史记录和元数据信息

# 导入镜像:
docker load < [image.tar_name]
docker load --input [image.tar_name]
例如:docker load nginx.tar
注意:docker load 不能指定镜像的名称

容器相关命令

  • docker容器就是运行起来的镜像
# 查看容器:
docker ps
注意:
1.管理docker容器可以通过名称,也可以通过ID
2.ps是显示正在运行的容器, -a是显示所有运行过的容器,包括已经不运行的容器

# 守护进程方式启动容器:
docker run <参数,可选> [docker_image] [执行的命令]
让Docker容器在后台以守护形式运行。此时可以通过添加-d参数来实现
docker run -d nginx

# 启动已终止的容器:
在生产过程中,常常会出现运行和不运行的容器,我们使用 start 命令开起一个已关闭的容器
docker start [container_id]

# 关闭容器:
docker stop [container_id]

# 删除容器:
1.正常删除--删除已关闭的:
docker rm [container_id]
# 清空已经停止的容器:
docker container prune
2.强制删除--删除正在运行的:
docker rm -f [container_id]
3.删除部分容器
docker container prune --filter "until=24h"
# 批量删除容器:
docker rm -f $(docker ps -a -q)

# 创建并进入容器:
docker run --name [container_name] -it [docker_image] /bin/bash
--name:给容器定义一个名称
-i:则让容器的标准输入保持打开
-t:让docker分配一个伪终端,并绑定到容器的标准输入上
/bin/bash:执行一个命令
例如:sudo docker run -it --name nginx nginx /bin/bash

# 退出容器:
1.exit
2.Ctrl + D

# 手工方式进入容器:只能进入正在运行的容器
docker exec -it 容器id /bin/bash
例如:
sudo docker exec -it 49fc1bc86bbd /bin/bash

根据容器创建镜像:

根据容器创建镜像:
docker commit -m '改动信息' -a "作者信息" [container_id] [new_image:tag]
例如:
1.进入运行容器:docker exec -it 49fc1bc86bbd /bin/bash
2.修改容器内容:mkdir ks
3.退出容器:exit
4.将容器打包成镜像:sudo docker commit -m 'mkdir /ks' -a "ks" 49fc1bc86bbd ks-nginx:v0.1
5.运行容器:sudo docker run -itd ks-nginx:v0.1 /bin/bash

Docker数据卷

什么是数据卷容器?
将宿主机的某个目录,使用容器的方式来表示,然后其他的应用容器将数据保存在这个容器中,达到大批量应用数据同时存储的目的

数据卷容器操作流程
如果使用数据卷容器,在多个容器间共享数据,并永久保存这些数据,需要有一个规范的流程才能做得到:
1、创建数据卷容器
2、其他容器挂载数据卷容器
注意:数据卷容器不启动

创建一个数据卷容器:
docker create -v [容器数据卷目录] --name [容器名字] [镜像名称] [命令(可选)]
例如:sudo docker create -v /data --name ks-nginx nginx

创建两个容器,同时挂载数据卷容器:
docker run --volumes-from [数据卷容器id/name] -tid --name [容器名字] [镜像名称] [命令(可选)]
例如:
创建 vc-test1 容器
docker run --volumes-from 917e45d43db3 -tid --name vc-test1 nginx /bin/bash
创建 vc-test2 容器
docker run --volumes-from 917e45d43db3 -tid --name vc-test2 nginx /bin/bash
确认卷容器共享:
1.进入vc-test1容器
docker exec -it vc-test1 /bin/bash
2.创建一个文件
3.exit
4.进入vc-test2容器
docker exec -it vc-test2 /bin/bash
5.确认vc-test1中创建的文件在vc-test2中也能看到
说明:容器间可以共享数据卷你容器,不过数据是保存在数据卷内,并没有保存到宿主机的文件目录中

Docker网络

端口映射简介:
默认情况下,容器和宿主机之间网络是隔离的,我们可以通过端口映射的方式,将容器中的端口,映射到宿主机的某个端口上。这样我们就可以通过 宿主机的ip+port的方式来访问容器里的内容

端口映射种类:
1、随机映射	   -P(大写)
2、指定映射     -p 宿主机端口:容器端口
注意:生产场景一般不使用随机映射,但是随机映射的好处就是由docker分配,端口不会冲突,
不管哪种映射都会影响性能,因为涉及到映射

默认随机映射:
docker run -d -P [镜像名称]
例如:docker run -d -P nginx

指定主机随机映射:
docker run -d -p [宿主机ip]::[容器端口] --name [容器名称] [镜像名称]
例如:docker run -d -p 192.168.0.113::80 --name nginx-2 nginx

指定端口映射:
docker run -d -p [宿主机ip]:[宿主机端口]:[容器端口] --name [容器名字] [镜像名称]
例如:docker run -d -p 192.168.0.113:1199:80 --name nginx-1 nginx
查看新容器ip:
sudo docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ece19d81ba89

多端口映射方法:
docker run -d -p [宿主机端口1]:[容器端口1]  -p [宿主机端口2]:[容器端口2] --name [容器名称] [镜像名称]
例如:
docker run -d -p 520:443 -p 6666:80 --name nginx-3 nginx

Dockerfile

Dockerfile的作用:
1、找一个镜像:   	     ubuntu
2、创建一个容器: 	    docker run  ubuntu
3、进入容器:		     docker exec -it 容器 命令
4、操作:			  各种应用配置
5、构造新镜像:		docker commit   

Dockerfile使用准则:
	1、大: 首字母必须大写D
	2、空: 尽量将Dockerfile放在空目录中。
	3、单: 每个容器尽量只有一个功能。
	4、少: 执行的命令越少越好。

Dockerfile基础四指令:
	基础镜像信息			   从哪来?
	维护者信息				我是谁?
	镜像操作指令			   怎么干?
	容器启动时执行指令		 嗨!!!

Dockerfile使用命令:
docker build -t [镜像名]:[版本号] [Dockerfile所在目录]
例如:docker build -t nginx:v0.2 /opt/dockerfile/nginx/

准备环境
1.创建Dockerfile专用目录:
mkdir /docker/images/ssh -p
cd /docker/images/ssh
2.创建秘钥认证
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub > authorized_keys
3.准备软件源
cp /etc/apt/sources.list ./
4.创建Dockerfile文件
# 构建一个基于ubuntu的ssh定制镜像
# 基础镜像
FROM ubuntu
# 镜像作者
MAINTAINERPresident.Kang ks417512@163.com

# 执行命令
# 增加软件源
ADD sources.list /etc/apt/sources.list
# 安装 ssh 服务
RUN apt-get update && apt-get install -y openssh-server curl vim net-tools && mkdir -p /var/run/sshd && mkdir -p /root/.ssh && sed -i "s/.*pam_loginuid.so/#&/" /etc/pam.d/sshd && apt-get autoclean && apt-get clean && apt-get autoremove
# 复制配置文件到相应位置,并赋予脚本可执行权限
ADD authorized_keys /root/.ssh/authorized_keys
# 对外端口
EXPOSE 22
# 启动ssh
ENTRYPOINT ["/usr/sbin/sshd","-D"]
5.构建镜像
docker build -t ubuntu-ssh .
6.效果查看
docker run -d -p 10086:22 ubuntu-ssh
docker ps
docker port c03d146b64d4
7.ssh查看效果
ssh 192.168.8.14 -p 10086
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值