docker使用

最近在进行服务器批量操作时学习的一点docker的内容,在此记录下来防止以后遇到时方便查找学习,记录内容并不是很详细,没有详细的参数介绍等内容,需要用到的可以使用man查看或者docker help查看

下载docker离线包https://yum.dockerproject.org/repo/main/centos/7/Packages/

docker官方网站下载镜像 https://hub.docker.com/https://hub.daocloud.io/

 

一、docker基本命令:

创建docker镜像:

docker build -t="ubuntu:v1" . 创建docker镜像

运行容器:

docker run -it --rm --name mycon ubuntu:v1  退出容器后删除容器

后台运行 docker run -itd--name mycon ubuntu:v1

容器退出:

exit

后台执行容器:

ctrl + P + Q

查看正在运行的容器:

docker ps -a

多窗口进入容器:

docker exec -it mycon(CONTAINER ID) /bin/bash

容器停止:

docker stop mycon(CONTAINER ID)

容器恢复:

docker restart mycon(CONTAINER ID)

重新进入容器:

docker -it attach mycon(CONTAINER ID)

容器/镜像删除:

docker rm/rmi -f(强制) mycon(CONTAINER ID)

从宿主机器拷贝内容到容器:

docker cp path/file mycon:path, 反之互换

修改docker的mtu大小:

vi /usr/lib/systemd/system/docker.service,在启动项中加入-mtu=1600后,执行

systemctl daemon-reload,重启docker服务,只有启动容器后宿主上的docker0的mtu才会变化,没有容器启动时docker0的mtu不变

镜像/容器打包:

打包:docker save -o image.tar 镜像名

导入:docker load --input image.tar 或者 docker load < image.tar

容器的网卡修改ip,则需要给这个网络指定一个subnet制定网桥

因为容器ip只有在私有网桥上才能支持修改

创建网桥并指定子网络:

docker network create --driver bridge --subnet 192.168.0.0/24 subinet 

创建网桥并自定义网桥名字:

docker network create -o "com.docker.network.bridge.name"="subinet" --subnet 192.168.0.0/24 subinet 

运行容器时指定容器ip

docker run --rm -it --net subinet --ip 192.168.0.10 --name mycon ubuntu:v1

docker镜像信息查看:

/var/lib/docker目录下存放着跟镜像有关的信息(也是pull 镜像后的保存路径),能够看到完整的sha256

关于docker0网卡:

docker每启用一个容器会出现一个网卡,所有网卡的流量都会到doker0上,docker0相当于一个网关,所有容器中的数据都会到该网卡到达操作系统然后发到网络中

二、私有仓库配置

仓库使用说明文档https://docs.docker.com/registry/

服务端仓库创建

docker run -d -v /mnt/registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:v1

/mnt/registry:/var/lib/registry:挂载路径

--privileged=true:放开权限

registry:v1:仓库的镜像名字

registry:仓库的容器名字

registry启动时会连接网络获取数据,所以在网络隔离的环境下,使用docker save在一台互联网机器上将registery镜像打包,然后将打包文件发到目标机器上使用docker load导入镜像

联网环境下直接使用docker push register下载仓库镜像

客户端配置:

1.在/etc/default下创建docker文件,添加 DOCKER_OPTS="--insecure-registry 10.127.160.24:5000"

[root]# vim /etc/default/docker
DOCKER_OPTS="--insecure-registry 121.34.234.22:5000" #镜像服务器的ip
ADD_REGISTRY="--add_registry 121.34.234.22:5000"

add_registry选项可在pull/push镜像时不用使用tag修改镜像名字,默认到私有仓库下载,详情查看tag命令

2.在/usr/lib/systemd/system/docker.service中添加和修改红框中标出的内容

[root]# vim /lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documnetation=https://docs.docer.com
After=network.target docker.socket
Requires=docker.socket

[Service]
Type=notify
EnvironmnetFile=/etc/default/docker
ExecStart=/usr/bin/docker/ daemon -H fd:// $DOKCER_OPTS
......

[Install]
......

或者在/etc/docker/daemon.json文件中添加如下内容,使用该文件则不用进行第一步的操作,若该文件没有就自己创建一个

{
    "--insecure-registry": ["121.34.234.22:5000"] #镜像服务器的ip
    "--add_registry": ["121.34.234.22:5000"]
}

3.执行systemctl daemon-reload;service docker restart

4.使用tag命令修改容器名字

docker  tag  ubuntu:v2  localhost:5000/my-image ,localhost:私有仓库的ip地址(121.34.234.22)

5.使用push命令上传镜像

docker push localhost:5000/my-ubuntu

6.使用pull命令下拉镜像

docker pull localhost:5000/my-ubuntu

注:如果服务端ip为192.168.0.123则localhost即为192.168.0.123

由于建立的私有仓库没有直观的方式进行管理,目前只是使用了curl来查看私有仓库中的镜像,没有尝试过仓库中镜像的删除测试,按照该方法创建的仓库只能使用push上传进行,不能删除镜像

三、仓库维护

查看镜像的方法:这里也只是提供一个连接,如有需要的可以打开连接自行学习

curl -XGET http://10.127.160.24:5000/v2/_catalog

仓库管理参考:https://www.imooc.com/article/68976

工具下载:https://github.com/burnettk/delete-docker-registry-image

四、参考内容:

https://blog.csdn.net/fgf00/article/details/52040492

https://www.imooc.com/article/68976

https://docs.docker.com/registry/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值