0%

docker学习入门

前言:初学docker的一些记录

docker信息

docker:有两个版本:docker-ce(社区版)和docker-ee(企业版)
docker hub 镜像库

卸载docker

1
sudo apt-get remove docker docker-engine docker.io

docker安装

安装docker

1
2
3
4
sudo spt-get update
sudo apt-get install docker.io
# 将/user.bin.docker.io可执行文件链接到/usr/local/bin/docker
sudo ln -sf /user.bin.docker.io /usr/local/bin/docker

安装docker社区版

1
sudo apt-get install docker-ce

安装docker企业版

1
sudo apt-get install docker-engine

查看docker版本

1
docker -v

如果资源被锁

1
2
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

docker-compose安装

1
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

docker基本命令

  • 镜像与容器的关系同类与实例

    启动 systemctl start docker
    守护进程重启 sudo systemctl daemon-reload
    重启docker服务 systemctl restart docker
    重启docker服务 sudo service docker restart
    关闭docker service docker stop
    关闭docker systemctl stop docker

    docker search <镜像名称> 搜索镜像
    docker pull <镜像名称>:<标签> 从镜像库拉取镜像
    docker images 查看镜像
    docker ps 查看容器
    docker rm <容器名称> 删除容器
    docker rmi <镜像名称/镜像ID>:<标签> 删除镜像
    docker run 创建容器
    docker logs 查看日志
    docker load 导入镜像
    docker save 导出镜像
    docker commit 从容器的修改汇中创建镜像
    docker start <容器名称/容器ID> 启动容器
    docker restart <容器名称/容器ID> 重启容器
    docker stop <容器名称/容器ID> 停止容器
    docker attach <容器名称/容器ID> 连接容器
    docker exec <容器名称/容器ID>从外部运行容器内的命令

    docker history 查看镜像历史
    docker cp 复制文件
    docker diff 检查容器文件的修改
    docker inspect 查看详细信息

docker images 列出镜像

image-20200111235757347

在列出信息中,可以看到五个字段信息:

  • repository:仓库,比如 ubuntu
  • tag:镜像的标记,比如 laster
  • image id:它的 ID 号(唯一)
  • created:创建时间
  • size:镜像大小

docker run

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run <选项><镜像名称><执行文件>

-t:在新容器内指定一个伪终端或终端。

-i:允许你对容器内的标准输入 (STDIN) 进行交互。

-d: 后台运行容器,并返回容器ID;

-p: 端口映射,格式为:主机(宿主)端口:容器端口

--name="": 为容器指定一个名称;

/bin/bash 是ubuntu等Linux系统中的一个可执行文件

example

1
sudo docker run --name hello -d -p 80:80 -v /root/data:/data hello:0.1

-p 80:80 选项将主机的80号端口与容器的80号端口连接起来,并暴露到外部。这样设置好,连接http://<主机IP>:80就会连接到容器的80号端口

-v /root/data:/data选项将主机的/root/data目录连接到容器的/data目录。若将文件放入/root/data目录,则能从容器读取响应文件

docker ps

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-a :显示所有的容器,包括未运行的、终止的容器

-f :根据条件过滤显示的内容。

--format :指定返回值的模板文件。

-l :显示最近创建的容器。

-n :列出最近创建的n个容器。

--no-trunc :不截断输出。

-q :静默模式,只显示容器编号。

-s :显示总的文件大小。

docker images

1
2
3
4
5
6
7
8
9
10
11
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

--digests :显示镜像的摘要信息;

-f :显示满足条件的镜像;

--format :指定返回值的模板文件;

--no-trunc :显示完整的镜像信息;

-q :只显示镜像ID。

docker attach

docker attach <容器名称>
连接一个正在运行的容器,执行该命令后回车,显示Bash shell

1
docker attach CONTAINER ID

在Bash shell中输入exit或ctrl+D终止容器,若依次输入ctrl+P、ctrl+Q,则不会终止容器而只推出

查看docker

1
2
3
4
5
6
7
8
// 查看镜像历史
docker history <镜像名称>:<标签>

// 显示正在运行的容器中修改文件的列表,比较标准是创建容器的镜像内容。A为添加的文件,C为修改的文件,D为删除的文件
docker diff <容器名称或容器ID>

// inspect 查看镜像或容器详细信息
docker inspect <镜像或容器名称或ID>

docker错误

权限 需使用root

1
2
3
#docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,需要root权限才能访问。

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/json: dial unix /var/run/docker.sock: connect: permission denied
-------------本文结束感谢您的阅读-------------