docker 使用

14 篇文章 0 订阅
2 篇文章 0 订阅

目录

一. 安装docker

1. 下载docker,设置文件保存位置

2. 修改完成后reload配置文件

3. 重启docker服务

二.启动docker

1. 启动命令 

2. 查看版本

3. 搜索镜像,下载镜像

4. 查看镜像列表

5. 启动容器

   (1)守护式启动(后台启动)

   (2)交互式启动(前台启动,退出界面停止容器)

6. 停止容器

7. 文件拷贝

8. 查看容器ip

9. 删除容器

10. 删除镜像

11. 保存容器为镜像

12. 备份镜像

13. 迁移恢复镜像为容器

14. 查看ip

15. 卸载

三. docker自动化脚本

四. docker本地私服安装

1. 运行docker pull命令拉取registry镜像

2. 通过registry镜像启动一个容器

3. 打开浏览器查看运行状况

4. 给新的镜像打包标签

5. 修改docker连接地址优先使用本地私服地址

6. 上传镜像到到私库

7. 本地服务器拉取私服镜像

8. 其他服务器拉取镜像

 8.1. 配置优先拉取镜像的地址 

 8.2. 拉取镜像 

9. 设置带有权限的私服

9.1. 创建宿主机存放密匙的目录

9.2. 写入密码

9.3. 以带有权限的方式启动容器

9.4. 设置登录登出(需要写ip)

9.5. 删除私服中的镜像

10. 最小包Alpine

10.1. 搜索指令

10.2. python安装依赖 

10.3. 修改Alpine 的apk为阿里源

10.4. 更新apk

10.5.  Alpine 搜索依赖

10.6. Alpine 安装依赖 

10.7. 安装时区alpine依赖

10.8. docker支持中文

11. docker 设置镜像保存位置

11.1. 安装后修改配置文件

11.2. 写入新的保存绝对路径

11.3. 保存退出后,重新加载配置文件

11.4. 启动docker 

五. docker内部运行脚本


一. 安装docker

使用版本为centos6

先卸载之前版本

yum erase $(rpm -qa | grep docker)

1. 下载docker,设置文件保存位置

(如果没有,换docker-io 或者yum install epel-release  安装epel后再次下载)

yum -y install docker

修改docker.service文件,使用--graph参数指定存储位置

vim /usr/lib/systemd/system/docker.service

文本内容:ExecStart=/usr/bin/dockerd下面添加如下内容:

--graph /home/tools/docker/data \

2. 修改完成后reload配置文件

sudo systemctl daemon-reload

3. 重启docker服务

sudo systemctl  restart docker.service

二.启动docker

1. 启动命令 

# centos6
service docker start
# centos7
systemctl/service start/stop/status  docker

2. 查看版本

docker -v

3. 搜索镜像,下载镜像

搜索镜像

docker search [镜像名称] 

拉取镜像          

docker pull  [对应的镜像名称]

下载镜像速度较慢,可以修改拉取镜像的地址为国内地址 如下

 vi /etc/docker/daemon.json

输入替换内容为: 

 {"insecure-registries":["192.168.101.11:5000"]} 

192.168.101.11:5000表示docker源的地址

4. 查看镜像列表

 docker images

5. 启动容器

   (1)守护式启动(后台启动)

docker  run  -di --name=容器名称 容器:标签 -p 宿主机端口:容器端口 -v 宿主机目录:容器目录 
# 指定容器对映射目录的修改权限
\--privileged=true

登录守护式容器

docker exec -it 容器名称/容器id  /bin/bash

   (2)交互式启动(前台启动,退出界面停止容器)

# 运行容器
docker  run  -it  --name=容器名称   容器:标签  -p 宿主机端口:容器端口 -v 宿主机目录:容器目录
# 退出当前容器
exit

6. 停止容器

docker stop/start 容器名称/id

7. 文件拷贝

# 拷贝到容器中
docker cp 宿主机文件  容器名称:容器文件路径
# 拷贝到主机中
docker cp  容器名称:容器文件路径   宿主机文件

8. 查看容器ip

docker inspect  容器名称

9. 删除容器

# 只能删除停止的容器
docker rm 容器id

10. 删除镜像

docker rmi 镜像id

11. 保存容器为镜像

docker commit  当前需要保存的镜像名称  新的镜像名称

12. 备份镜像

docker  save -o 压缩后的镜像名称.tar  需要压缩的镜像名称

13. 迁移恢复镜像为容器

docker load -i  压缩后迁移到本机的镜像名称.tar

14. 查看ip

# 查询对应容器名称的ip
docker inspect containerName

15. 卸载

# 查找安装过的docker
rpm -qa | grep docker
# 卸载安装
rpm -e  name
# 删除镜像与容器
rm -rf /var/lib/docker

三. docker自动化脚本

#!/bin/bash

case $1 in
    "docker")
        systemctl $2 docker
    ;;
    "img")
        docker images
    ;;
    "run")
        docker run -d -t -p $3 --privileged=true --name=$2 $3 /home/tools/shell/startup.sh
    ;;
    "ps")
        docker ps -a
    ;;
    "del")
        docker stop $2
        docker rm $2
    ;;
    "delimg")
        docker rmi $2
    ;;
    "start"|"restart"|"stop")
        docker $1 $2
    ;;
    "commit")
        docker commit $2 $3
    ;;
    "save")
        docker save -o ${3}.tar $2
    ;;
    "load")
        docker load --input $2
    ;;
    "cli")
        docker exec -it $2 /bin/bash
    ;;
    "cp")
        docker cp $2 $3
    ;;
    "ip")
        docker inspect $2
    ;;
    "tag")
        docker tag $2 $3
    ;;
    *)
        echo "--------------------------------------------------"
        echo "请输入参数                         { docker | images | run | show | del | delimage | ves | commit | save | load | client | cp | ip }"
        echo "docker   {} | 操作docker           { start | stop | status }"
        echo "img         | 列出所有镜像"
        echo "run   {} {} | 创建镜像为容器       { 别名 } { 镜像id }  { 端口映射 }"
        echo "ps          | 显示所有容器"
        echo "del      {} | 停止并删除容器       { 容器ID }"
        echo "delimg {}   | 删除镜像             { 镜像ID }"
        echo "{} {}       | 操作容器             { start | stop | restart } {容器ID}"
        echo "commit{} {} | 容器提交为镜像       { 容器ID } { 保存之后的镜像ID }"
        echo "save  {} {} | 将镜像保存成本地文件 { 保存的镜像ID } {保存之后的文件名称} "
        echo "load     {} | 载入本地镜像         { 本地文件名称 }"
        echo "cli      {} | 进入容器             { 容器ID }"
        echo "cp    {} {} | 宿主机与镜像之间拷贝 { 容器ID:/path } { path } "
        echo "ip       {} | 获取容器的ip         { 容器ID }"
        echo "tag   {} {} | 将容器打包为标签     { 容器ID } { 标签 }"
        echo "--------------------------------------------------"
    ;;
esac

四. docker本地私服安装

1. 运行docker pull命令拉取registry镜像

docker pull registry

2. 通过registry镜像启动一个容器

docker run -d -t -p 5000:5000 --restart=always --name registry docker.io/registry:latest

3. 打开浏览器查看运行状况

localhost:5000/v2/                     下图表示正常

4. 给新的镜像打包标签

docker tag mydockerone 192.168.100.1:5000/

docker pull 192.168.100.1:5000/镜像名称

镜像名称      ([:版本号]  可选)

(mydockerone表示打包的镜像名称    192.168.100.1:5000/镜像名称 表示打包之后的名称)

5. 修改docker连接地址优先使用本地私服地址

vim /etc/docker/daemon.json
{"insecure-registries":["192.168.100.1:5000"],"graph": "/home/docker/data"}

graph表示docker镜像保存位置

6. 上传镜像到到私库

docker push 192.168.100.1:5000/镜像名称

访问web页面查看是否有对应的镜像

7. 本地服务器拉取私服镜像

docker pull 192.168.100.1:5000/镜像名称

8. 其他服务器拉取镜像

 8.1. 配置优先拉取镜像的地址 

vim /etc/docker/daemon.json   {"insecure-registries":["192.168.100.1:5000"]}

 8.2. 拉取镜像 

docker pull 192.168.100.1:5000/yxp/python

9. 设置带有权限的私服

9.1. 创建宿主机存放密匙的目录

mkdir /home/pwd

9.2. 写入密码

docker run  --entrypoint htpasswd registry -Bbn  username  userpasswd > /home/pwd/htpasswd

9.3. 以带有权限的方式启动容器

docker run -d -t -p 5000:5000 -v /home/pwd:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd --name registry docker.io/registry:latest

9.4. 设置登录登出(需要写ip)

# 登录:
docker login -u username -p userpasswd 192.168.100.1:5000
# 退出:
docker logout 192.168.100.1:5000

9.5. 删除私服中的镜像

docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/<镜像名称>
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml

10. 最小包Alpine

    docker有一个最小包Alpine,可以直接通过镜像下载对应的最小包  例如python3的最下包为 alpine-python

10.1. 搜索指令

docker search alpine-python

    找到对应的标签版本进行下载

10.2. python安装依赖 

pip install 对应的包名称

10.3. 修改Alpine 的apk为阿里源

vi /etc/apk/repositories
http://mirrors.ustc.edu.cn/alpine/v3.5/main
http://mirrors.ustc.edu.cn/alpine/v3.5/community

10.4. 更新apk

apk update

10.5.  Alpine 搜索依赖

apk search ffmpeg

10.6. Alpine 安装依赖 

apk add ffmpeg

10.7. 安装时区alpine依赖

 apk add chrony

   启动 chronyd

#1.安装时区依赖
apk add tzdata
#2.复制上海时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#3.指定为上海时区
echo "Asia/Shanghai" > /etc/timezone
#4.验证
date -R

宿主机与docker容器的时区同步方式,共享时区文件

-v /etc/localtime:/etc/localtime:ro

10.8. docker支持中文

# shell输入
export LANG=C.UTF-8

11. docker 设置镜像保存位置

11.1. 安装后修改配置文件

vim /usr/lib/systemd/system/docker.service

11.2. 写入新的保存绝对路径

ExecStart=/usr/bin/dockerd --graph

11.3. 保存退出后,重新加载配置文件

 systemctl daemon-reload

11.4. 启动docker 

 systemctl start docker

五. docker内部运行脚本

内部运行的脚本需要添加 /bin/bash结尾

#!/bin/sh
#   最后必须加/bin/bash ,表示伪终端,否则执行完脚本之后 docker会停止    调用环境变量与脚本,都必须使用绝对路径
echo "123" >> /home/tools/shell/1.txt
/bin/bash
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钻风巡山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值