Docker 安装及基本使用

安装 docker

官网提供多种安装方式,这里使用 Install from a package

通过 wget 下载对应的 deb, 点这里查找 ,然后使用 dpkg 安装

$ sudo dpkg -i /path/to/package.deb

如果安装过程中提示缺少依赖包 libltdl7, 则先安装 apt-get install libltdl7

$ docker 查看所有可用命令

$ docker run --help / -h 查看命令帮助信息


阿里云 docker 加速

Hub

https://dev.aliyun.com/search.html

阿里加速器(管理中心)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["Your url"]
}
EOF
直接复制上一条命令然后终端中粘贴,并回车执行
作用是将 EOF 中的内容添加到 daemon.json 文件中
tee 命令 :Copy standard input to each FILE, and also to standard output.
<<-'END'
内容块

END

这个用法方便输入多行内容,关键字可以自定,不一定是 'EOF'

刷新服务并重启 docker
sudo systemctl daemon-reload
sudo systemctl restart docker

命令权限
Docker 命令需要使用 sudo 即 root 用户权限,通过将用户加入到 docker 用户组来避免一直输入 sudo
$ sudo usermod -aG docker $USER
完成后需要退出重新登录

下载镜像
$ docker pull ubuntu 
不加版本号,则为 latest

删除镜像
$ docker rmi IMAGE

创建新容器
$ docker run ubuntu /bin/echo 'hello maiyo'
如果不指定命令,则使用镜像定义的命令,如: ubuntu 是 /bin/bash,nginx 是 nginx -g , 可通过 $ docker inspect ubuntu 查看
如果不指定容器名称,则会随机分配

带交互的容器(可进入容器内)
$ docker run --name myserver ubuntu -it /bin/bash

后台运行容器
$ docker run --name myserver -d ubuntu ping www.baidu.com
创建一个后台运行容器,并在后台一直执行 ping 命令
$ docker logs --follow myserver

通过查看容器日志,可看到容器一直在运行 ping... 命令


进入后台运行容器

可以通过这两个命令
attach : Attach local standard input, output, and error streams to a running container
$ docker attach CONTAINER (ID or NAME)
exec : Run a command in a running container
$ docker exec -it CONTAINER /bin/bash

区别:使用 attach 退出(exit)或终止容器,容器也停止运行,exec 不会


挂载 volume

$ docker run -v /home/user/www:/www ubuntu /bin/bash

冒号前:source dir 宿主机目录(可省略)

冒号后:destination dir 容器内目录(必须为绝对路径)

source 若为相对路径则会在 /var/lib/docker/volumes/ 目录下创建宿主机目录

如果省略 source 则随机生成一个目录名

$ docker insepect CONTAINER 查看 "Mounts" 部分了解挂载详情

将挂载目录设为只读

$ docker run -v source:destination:ro ubuntu


连接容器

一般的多个容器之间的通信可以通过:

1.容器 IP (容器重启后 IP 会变)

2.宿主机 IP + 容器 PORT

3.连接容器后的别名 如 defaultZone=http://eurekaserver:8761/eureka/ ,eurekaserver 为别名

$ docker run -d --name mynginx --link CONTAINER:alias nginx

其中 CONTAINER 为连接的目标容器,alias 为取的别名

进入容器内通过查看 $ cat /etc/hosts, 可以看到加入一条解析规则

127.0.0.1       localhost

172.17.0.5      275eb3cce567

172.17.0.4      eurekaserver 57cb35ef5c01 app_eureka_server

172.17.0.5 当前容器的 IP

172.17.0.5 link 容器的 IP , 与映射,后面是 link 容器的容器 ID 与容器名称


常见问题

$ docker run -d ubuntu /bin/bash

使用上面的命令创建容器后,容器马上就退出了

因为在 docker 中,如果容器运行命令不是一个一直挂起的命令如 ping、top 等,在执行完命令后就会自动退出

如果想在后台运行 ubuntu 可以使用带交互的方式运行并使用 exec 进入容器,如下:

$ docker run -dit ubuntu /bin/bash

$ docker exec -it CONTAINER /bin/bash 


停止、重启、运行容器
$ docker stop / restart / start CONTAINER

查看所有容器
$ docker ps -a / --all (不带参数则查看运行中的容器)

删除容器
$ docker rm CONTAINER

查看容器日志

$ docker logs CONTAINER

拷贝文件及目录

$ docker cp nginx_container:/etc/nginx/nginx.conf /root/nginx/conf/ 拷贝文件

$ docker cp nginx_container:/etc/nginx/ /root/nginx/conf/ 拷贝目录


端口、IP、映射

容器端口

$ docker ps

通过 PORTS 列,可查看到容器开放的端口


容器IP

$ docker inspect CONTAINER

查看 IPAddress


端口映射

$ docker port CONTAINER

列出指定的容器的端口映射


创建镜像
实际上是从一个变化后(如环境配置或项目部署)的容器上创建一个新的镜像
$ docker commit -m 'Commit message' -a 'author' CONTAINER maiyo/image:latest

通过 Dockerfile 创建镜像
在指定目录创建 Dockerfile 文件(无后缀)

在 Dockerfile 文件中通过指令创建镜像,指令如下:


FROM ubuntu

MAINTAINER Maiyo maiyo@email.com (可选)

VOLUME /tmp

RUN apt-get update

RUN apt-get install net-tools


VOLUME:

创建一个挂载卷,使容器内的 /tmp 目录映射到宿主机上,实现可持久化

与 run -v 创建容器不同的是,VOLUME 不能指定宿主的位置

$ docker insepect IMAGE 查看 "Volumes" 部分了解挂载详情


CMD 与 ENTRYPOINT:

都是用作启动时执行命令(CMD / ENTRYPOINT 在 run 时执行,build 时并不执行)

CMD / ENTRYPOINT,在 Dockerfile 中多个无效,只有最后一个起作用,多个命令用 && 隔开

使用 CMD 定义,如果 docker run 时,不带 command 则 CMD 定义的命令将被执行,如果带 command 则 CMD 定义的命令被覆盖不被执行

使用 ENTRYPOINT 定义,不管 docker run 时带不带 command 都将被执行


使用 build 命令创建镜像
$ docker build -t maiyo/demo:latest /home/maiyo/docker/
-t / --tag : 格式 'name:tag' ,必须小写
path : 注意是 Dockerfile 文件所在的目录
结束后通过 $ docker images 可查看到新建的镜像

创建过程中通过创建临时容器跑 RUN 命令,结束之前将删除临时容器
如果失败需要先删除临时容器再删除失败的镜像
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 是一种容器化技术,可以帮助开发者快速构建、打包、发布和运行应用程序的环境。在安装使用 Docker 之前,需要先了解 Docker基本概念。 Docker基本概念 1. 镜像(Image):Docker 镜像是一个只读的模板,包含了运行应用程序所需要的所有文件、配置和依赖项。 2. 容器(Container):Docker 容器是 Docker 镜像的运行实例,可以被创建、启动、停止、删除、暂停等操作。 3. 仓库(Repository):Docker 仓库是用于存储和分享 Docker 镜像的地方,可以是公共的(如 Docker Hub)或私有的(如自己的服务器)。 Docker安装步骤 1. 安装 Docker 在 Ubuntu 系统上,可以使用以下命令安装 Docker: ``` $ sudo apt-get update $ sudo apt-get install docker.io ``` 安装完成后,可以使用以下命令检查 Docker 是否正确安装: ``` $ docker --version ``` 2. 配置 Docker安装 Docker 后,需要将当前用户添加到 Docker 用户组中,以便无需使用 sudo 命令也可以运行 Docker 命令: ``` $ sudo usermod -aG docker your_username ``` 需要重新登录才能使修改生效。 3. 运行 Docker 可以使用以下命令启动 Docker: ``` $ sudo systemctl start docker ``` 可以使用以下命令检查 Docker 是否正在运行: ``` $ sudo systemctl status docker ``` Docker基本使用 1. 拉取镜像 可以使用以下命令从 Docker 仓库中拉取镜像: ``` $ docker pull image_name ``` 例如,拉取 Ubuntu 镜像: ``` $ docker pull ubuntu ``` 2. 运行容器 可以使用以下命令运行容器: ``` $ docker run image_name ``` 例如,运行 Ubuntu 容器: ``` $ docker run ubuntu ``` 默认情况下,容器会在后台运行,并显示容器 ID。 可以使用以下命令运行交互式容器: ``` $ docker run -it image_name ``` 例如,运行交互式 Ubuntu 容器: ``` $ docker run -it ubuntu ``` 3. 列出容器 可以使用以下命令列出所有正在运行的容器: ``` $ docker ps ``` 可以使用以下命令列出所有容器: ``` $ docker ps -a ``` 4. 停止容器 可以使用以下命令停止容器: ``` $ docker stop container_id ``` 例如,停止容器 ID 为 123 的容器: ``` $ docker stop 123 ``` 可以使用以下命令停止所有正在运行的容器: ``` $ docker stop $(docker ps -q) ``` 5. 删除容器 可以使用以下命令删除容器: ``` $ docker rm container_id ``` 例如,删除容器 ID 为 123 的容器: ``` $ docker rm 123 ``` 可以使用以下命令删除所有容器: ``` $ docker rm $(docker ps -aq) ``` 6. 删除镜像 可以使用以下命令删除镜像: ``` $ docker rmi image_name ``` 例如,删除 Ubuntu 镜像: ``` $ docker rmi ubuntu ``` 可以使用以下命令删除所有镜像: ``` $ docker rmi $(docker images -q) ``` 以上是 Docker基本安装使用方法,更多高级用法可以参考 Docker 官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值