Docker入门基础知识(一)

##安装kafka服务

$ curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/kafka/docker-compose.yml > docker-compose.yml
$ docker-compose up -d
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3308:3306 -d mysql

docker pull pingcap/tidb
docker run --name tidb  -p 4000:4000 -d tidb


docker run --name nginx  -p 80:80  -d nginx


docker run --name redis -p 6378:6379 -d redis:6.2 redis-server --save 60 1 --loglevel warning

设置docker开机自启

systemctl enable docker
设置容器自启

  1. 创建容器时设置:
docker run -d --restart=always --name 容器名称 镜像名称
# 例如:
docker  run --restart=always 56f0b18af626

  1. 更新已有容器设置:
docker update --restart=always 容器ID
# 例如:
docker  update --restart=always 56f0b18af626

–restart具体参数,详见官方文档说明

在这里插入图片描述

问题描述 docker使用时,通过默认镜像地址检索或者拉取镜像时,仓库下载速度较慢,时常报错“net/http: TLS handshake timeout”。 解决问题的核心策略是,将拉取地址改为国内镜像仓库即可。

方法一
修改/etc/docker/daemon.json,多加几个可靠的地址,如下:

{
“registry-mirrors”: [“https://registry.docker-cn.com”,“http://hub-mirror.c.163.com”,“http://f1361db2.m.daocloud.io”,“https://mirror.ccs.tencentyun.com”]
}

会查看命令帮助 --help

>docker start --help
>docker run --help
>docker container run --help

查看镜像

docker images

查看容器

docker ps -a
docker container ls -a

进入到容器

docker container exec -it containerID /bin/bash

docker version

启动容器

docker run -d -p 80:8080 nginx

-d 后台运行,不加前台运行 -p 端口映射 内:外

docker run 与docker start的区别
docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start
即可。
docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。
而dockerstart的作用是,重新启动已存在的镜像。
也就是说,如果使用这个命令,我们必须事先知道这个容器的ID,或者这个容器的名字,我们可以使用docker ps找到这个容器的信息。

删除镜像

docker rmi imagesID

删除容器

docker rm ContainerID

拉取镜像

docker image publl library/nginx

发布image文件

$ docker login
1接着,为本地的 image 标注用户名和版本。

$ docker image tag [imageName] [username]/[repository]:[tag]
# 实例
$ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1


也可以不标注用户名,重新构建一下 image 文件。

$ docker image build -t [username]/[repository]:[tag] .

最后,发布 image 文件。

$ docker image push [username]/[repository]:[tag]

发布成功以后,登录 hub.docker.com,就可以看到已经发布的 image 文件。

上面的代码中,docker image pull 是抓取image文件的命令,library/hello-world是image文件在仓库里面的位置,其中library是image文件所在的组,hello-world是image文件的名字.
由于Docker官方提供的文件都放在library组里面,所以他是默认组,可以省略.因此上面的命令可以写成下面这样:

docker image publl  nginx

docker container run 会从一个镜像文件中生成一个容器实例,并且运行它.注意,docker container run命令具有自动抓取 image 文件的功能。
如果发现本地没有指定的 image 文件,就会从仓库自动抓取。因此,前面的docker image pull命令并不是必需的步骤

终止容器
docker container kill [container_id]

docker container run  和 docker run  命令相同。 前者是趋势。

Dockerfile 文件

DockerCompose

docker-machine

有了 Dockerfile文件以后就可以使用 docker image build 命令创建image文件了.

查看帮助
docker image --help

docker image bulid -t nginx_xwsh:0.0.1 .

-t参数用来指定image文件的名字,后面还可以用冒号指定标签,如果不指定,默认标签就是latest,
最后那个.表示Dockerfile文件所在的路径.

docker container logs [container_id]
docker container logs用来查看容器的输出,即容器里shell的标准输出.
比如: 如果docker run命令运行容器的时候,没有使用-it参数,就要使用这个命令查看输出
docker container exec
docker container exec命令用于进行一个正在运行的容器.
如果docker container run命令运行容器的时候,没有使用-it参数,就要使用这个命令进入进入容器,一旦进入容器,
就可以在容器的shell执行命令了.

$ docker container exec [container_id] /bin/bash
docker container cp
docker container cp命令用于从正在运行的容器里,将文件拷贝到本机.下面是拷贝当前 目录的写法:

$ docker container cp [container_id]:[/path/to/file] .

踩坑记录:

windows10中docker nginx开启 但页面访问不了

Windows下对docker端口进行映射,但是当你在主机的浏览器中,打开localhost:port无法访问对应的服务。

docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,

然后在这个系统中运行的docker。也就是说,服务中使用的localhost指的是这个Linux环境的地址,而不是我们的宿主环境Windows。

使用命令:

 docker-machine ip default 

得到真正的ip是192.168.99.100

其实在启动docker的时候也告诉我们默认ip为192.168.99.100

排查错误:
1.docker inspect 40f529c61fb12
2. docker exec -it 314fb4575ecf /bin/bash
3. docker exec  314fb4575ecf hostname

镜像加速

在国内使用Docker Hub的话就特别慢,为此,我们可以给Docker配置国内的加速地址。我看了一下,DaoCloud和阿里云的镜像加速还不错,另外还有网易的蜂巢。选一个就行了。以DaoClound为例,注册账号,然后在https://www.daocloud.io/mirror 就可以看到DaoClound提供给您的镜像加速的URL。然后到PowerShell中去依次执行:

docker-machine ssh default 
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile 
exit 
docker-machine restart default

这样重启Docker后就可以用国内的镜像来加速下载了。

试一下下载一个mysql看看快不快:

docker pull mysql

下载完镜像,我们运行一个容器:

docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123 mysql:latest

接下来我们打开windows下的mysql客户端,服务器地址填docker虚拟机的IP地址,通过docker-machine env可以看到,我这里是192.168.99.100,然后用户名root,密码123,这样我们就可以连接到docker容器里面的mysql了。

【注意,Docker容器是在VirtualBox的虚拟机里面,不是在Windows里面,所以不能用127.0.0.1访问】

docker-machine命令

参考资料
docker-machine ls

我们可以看到我们当前的Docker虚拟机的状态。如果什么都没有的话,那么我们可以使用以下命令创建一个Docker虚拟机。

docker-machine create --driver=virtualbox default
docker-machine stop default停掉Docker的虚拟机

文件挂载

docker run -v /www:/usr/share/nginx/html -d -p 8081:80 --name xwsh_55 nginx

1.首先在Oracle VM VirtualBox设置共享文件夹
2.我双击Docker Quickstart Terminal进入命令行界面,输入docker-machine restart default
3.然后输入docker-machine ssh default,进入虚拟机内部
4.然后我mount一下,发现data已被自动挂载到虚拟机里面一个叫www的目录了,所以在Oracle VM VirtualBox设置的名字和default虚拟机中的文件夹名字是一致的
5. docker run -v /www:/usr/share/nginx/html -d -p 8081:80 --name xwsh_55 nginx
进入centos的容器里面之后输入df -h发现已经挂载成功了。之前搞不定的主要原因就是虚拟机虚拟了太多层了

docker-machine.exe  ssh default
sudo -i
mkdir www
sudo mount -t vboxsf WWW /mnt/www
cd www/

在这里插入图片描述

在这里插入图片描述

Docker LNMP环境搭建
参考资料

资料推荐:

Docker入门教程

Docker 微服务教程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值