docker使用笔记
文章目录
docker 安装(ubuntu)
官方文档:(直接去官网,网上的都不要信)
https://docs.docker.com/engine/install/ubuntu/
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
docker安装(centos)
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
docker安装(Kylin V10)
需要加上
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
docker-compose安装
官方文档:
https://docs.docker.com/compose/install/
下面是官方文档的安装方式,注意此处版本“1.29.2”不一定是最新的,最高到官网上找最新版本。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
docker.service 配置文件
官方说明:
https://docs.docker.com/engine/reference/commandline/dockerd/
/etc/docker/daemon.json 配置文件
{
"dns": ["192.168.1.254"],
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
"insecure-registries": ["110.110.110.110:1234"]
}
使用国内镜像仓库配置:在registry-mirrors配置镜像仓库地址
登录自己的镜像仓库(非STL/SSL):需要配置insecur-registries添加上ip和端口
insecure-registries: it replaces the daemon insecure registries with a
new set of insecure registries. If some existing insecure registries
in daemon’s configuration are not in newly reloaded insecure
registries, these existing ones will be removed from daemon’s config.
registry-mirrors: it replaces the daemon registry mirrors with a new
set of registry mirrors. If some existing registry mirrors in daemon’s
configuration are not in newly reloaded registry mirrors, these
existing ones will be removed from daemon’s config.
重启docker服务:
systemctl restart docker
docker login 错误
ubuntu 18.04上执行 docker login 登录镜像仓库的时候,抛出如下异常:
Remote error from secret service: org.freedesktop.DBus.Error.UnknownMethod: No such interface ‘org.freedesktop.Secret.Collection’ on object at path /org/freedesktop/secrets/collection/login
Error saving credentials: error storing credentials - err: exit status 1, out: No such interface 'org.freedesktop.Secret.Collection' on object at path /org/freedesktop/secrets/collection/login
产生原因:apt包管理器安装docker-compose时装上的golang-docker-credential-hepers造成的错误。
解决办法:apt purge golang-docker-credential-helpers
docker命令
官方文档:
https://docs.docker.com/engine/reference/commandline/docker/
基础用法
拉取镜像:docker pull <镜像名>[:<版本>]
查看镜像:docker images
保存镜像:docker save -o <文件名>.tar <镜像名/镜像ID>
加载镜像:docker load <镜像文件>
删除镜像:docker rmi <镜像名/镜像ID>
运行容器:docker run <镜像名>[:<版本>]
查看容器:docker ps
停止容器:docker stop <容器ID>
重启容器:docker retart <容器ID>
删除容器:docker rm <容器ID>
进阶用法
进入容器:
docker exec -it <容器ID> /bin/bash
运行同时进入容器:
docker run -it alpine /bin/sh
docker run --rm -it --name gb_test test/test:0.1 /bin/bash
结束时自动删除容器
持续运行容器
执行个不会停止的命令
docker run -d alpine tail -f /dev/null
执行个不会停止的脚本
docker run -d alpine /bin/sh -c "while true; do sleep 1; done"
执行个不会停止的脚本(加输出)
docker run -d alpine /bin/sh -c "while true; do sleep 1;echo hello-world; done"
停用所有容器
docker stop $(docker ps -q)
删除所有容器(慎用)
docker rm $(docker ps -aq)
停用并删除所有容器(更慎用)
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
删除幽灵镜像(dangling)
docker rmi $(docker images -f "dangling=true" -q)
顶级用法
预留(等我玩明白了再写)
Dockerfile语法
官方文档:
https://docs.docker.com/engine/reference/builder/
CMD 与 ENTRYPOINT
CMD方式一
没有中括号的情况下,相当于在shell环境下运行程序。
CMD echo "Hello World!"
如果存在ENTRYPOINT, CMD将被覆盖
CMD方式二
没有ENTRYPOINT情况下CMD带中括号时,不是在shell环境下运行。
CMD ["/bin/bash", "-c", "echo 'Hello World!'"]
CMD方式三
在有ENTRYPOINT情况下CMD带中括号时,表示ENTRYPOINT的参数列表
ENTRYPOINT ["/bin/bash", "-c"]
CMD ["echo 'Hello World!'"]
ENTRYPOINT方式一
没有中括号的情况下,相当于在shell环境下运行程序。
ENTRYPOINT echo "Hello World!"
ENTRYPOINT方式二
有中括号情况下,不是在shell环境下运行。
ENTRYPOINT ["/bin/bash", "-c", "echo 'Hello World!'"]
FROM 基础镜像
docker-compose命令
官方文档:
https://docs.docker.com/compose/reference/
基础用法:
dcoekr-compose up -d [SERVICE…] 构建服务(重新)创建,启动(挂后台)
docker-compose down 停止所有容器并删除
docker-compose start [服务名称] 启动现有容器
docker-compose stop [服务名称] 停止容器不删除
docker-compose restart [服务名称] 重启容器
docker-compose ps 查看所有服务的运行情况
docker-compose images 查看所有服务的镜像信息
docker-compose.yaml语法
官方文档:
https://docs.docker.com/compose/compose-file/compose-file-v3/