一篇文章搞定docker从0到1搭建portainer并拉取各类镜像

2,219 阅读5分钟

portainer篇

1. 拉取portainer镜像

docker pull portainer/portainer

2.启动portainer容器

docker run -d -p 9000:9000 --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ --name portainer portainer/portainer
-p: 指定宿主机端口和容器端口 portainer默认端口是9000

-v: 目录映射,将/var/run/docker.sock映射到容器中,用于访问Docker的守护进程,控制Docker。/dockerData/portainer保存Portainer的配置信息。

--restart=always: 代表在容器退出时总是重启容器,还有其他几种重启策略:noon-failure、on-failuer:n、unless-stopped

在服务器开启防火墙9000端口(这里用的是腾讯云 则在腾讯云的规则里面暴露9000端口)

image.png

使用

服务器公网IP:9000端口

则可以访问portainer容器啦~

image.png 第一次进去需要设置密码 设置完密码portainer就安装成功~

image.png

mysql篇(mysql安装启动运行)

拉取最新mysql镜像:

docker pull mysql

但是我们指定5.7版本

docker pull mysql:5.7

image.png

拉取镜像后开始启动

docker run -d -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name  mysql mysql:5.7

指令参数介绍:

配置端口映射:
-p 3306:3306 --name mysql
将主机的3306端口映射到容器的3306端口
配置mysql数据卷挂载
1.-v /mydata/mysql/log:/var/log/mysql(日志文件挂载)
将主机中的日志文件夹挂载到对应容器的/var/log/mysql文件夹中
2.-v /mydata/mysql/data:/var/lib/mysql(数据文件挂载)
将主机中的数据文件夹挂载到主机对应容器的/var/lib/mysql文件夹中
3.-v /mydata/mysql/conf:/etc/mysql(配置文件挂载)
将主机的配置文件夹挂载到对应容器的/etc/mysql文件夹中
注(这里所提的主机指的是当前的linux宿主机)
配置用户
-e MYSQL_ROOT_PASSWORD=123456
设置初始化root用户的密码
指定镜像资源
-d mysql:5.7
-d:以后台方式运行实例
mysql:5.7:指定用这个镜像来创建运行实例

image.png 可以看到mysql容器已经运行起来了

放开3306端口

image.png

连接远程服务器mysql

image.png 连接成功。

Jenkins篇

通过docker拉取Jenkins镜像

docker pull jenkins/jenkins

image.png

接着新建一个用来挂载的文件夹,赋予权限

  #创建文件夹
  mkdir -p /data/docker/jenkins
  #权限
  chmod 777 /data/docker/jenkins

1668849818085.jpg 打开这个xml文件

1668849998165.jpg

将这个url换成清华大学官方镜像

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

启动Jenkins容器

docker run -d -uroot -p 9001:8080 -p 50000:50000 --name jenkins -v /data/docker/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime jenkins/jenkins
 -v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。
 -p 9001:9001 将主机的9001端口映射到容器的的9001端口。
 -p 50000:50000 将主机的50000端口映射到容器的50000端口

放开9001端口

image.png 通过浏览器 使用

服务器公网IP+9001

访问Jenkins

image.png 这里提示密码存在这个文件夹 注意这个文件夹是在docker容器里面的 所以我们需要进入到docker容器里面去取密码

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

1668849549538.jpg 将输出的密码粘贴到框内 稍等一下 继续下一步

1668849889580.jpg 这里我们选择第一个

1668850329298.jpg

等待

1668850842773.jpg 创建管理员账号

image.png 这里使用默认填充的url就好

image.png

image.png 安装完成!

Redis篇

1 拉取Redis最新镜像

docker pull redis

image.png

2 从官网下载redis.conf配置文件

https://redis.io/docs/management/config/

修改这几行

protected-mode no  #保护模式,限制为本地访问,修改后解除保护模式
requirepass root  #设置密码

3 启动容器

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf  -v /opt/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass root

nginx篇

拉取镜像
docker pull nginx

image.png

创建文件夹用于挂载文件
这里不需要创建html文件 下面步骤会复制容器的html文件进来。

image.png

启动nginx 测试镜像是否成功拉取
#8081对应本机的8081端口 80对应容器的80端口
#即将容器的80端口映射到本机的8081端口
#通过访问本机的8081端口去访问容器的80端口。
docker run -d --name nginx -p 8081:80 nginx

这里我使用了80端口 上面的8081只是用来较好的比喻。

image.png

将容器的文件复制进新建好的文件夹
 docker cp 08b1b53fae8f:/etc/nginx/nginx.conf /data/docker/nginx/
 docker cp 08b1b53fae8f:/etc/nginx/conf.d/* /data/docker/nginx/conf/
 docker cp 08b1b53fae8f:/usr/share/nginx/html/ /data/docker/nginx/html/
 前面的那串代码为容器ID,可以通过docker ps -a查看nginx的容器ID。
例如:

image.png

接着停止并删除当前容器
 docker stop 08b1b53fae8f
 docker rm -f 08b1b53fae8f

image.png

接着将文件夹挂载并且启动nginx
docker run --name nginx -p 80:80 -v /data/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /data/docker/nginx/html/:/usr/share/nginx/html/ -v /data/docker/nginx/logs/:/var/log/nginx/ -v /data/docker/nginx/conf/:/etc/nginx/conf.d --privileged=true -d nginx

image.png

使用IP+端口号 成功访问!

image.png