找回密码
 注册SCIFIFANS!
首页 科技专区 编程开发 使用Docker打开Hello world

使用Docker打开Hello world

6
回复
4312
查看
[ 复制链接 ]

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
<

用邮箱/用户名来登录sci-fifans!

您需要 登录 才可以下载或查看,没有账号?注册SCIFIFANS!

x
开新坑。。。

首先请看我开始入坑Docker的经过,内容从下一楼开始~

说实话,一开始看到Docker的介绍,我并没有想要使用的想法,因为我看的那篇文章,反复把Docker和虚拟机作比较,尽管文章说Docker执行效率非常高,但我还是不相信,毕竟我那可怜的辣鸡服务器经不起这样的摧残。。。


但是,后来因为安装Gitea太麻烦,我最后还是试着使用Docker部署,不得不说,真香。
整个安装过程使用的命令不超过10行。。。

因此,后来我稍微深入的了解了一下Docker,好家伙,简直太方便了,装个服务比手机安装个应用还简单。最关键的是:它的运行效率几乎和使用原生系统下一样!

当然,如果你只是使用宝塔面板,没有怎么接触命令行,那一开始使用Docker还是比较难的。

最后附上一张Docker与虚拟机对比的图片,内容从下一楼开始~

使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
本帖最后由 skyone 于 2021-7-24 19:40 编辑

首先,使用docker自然需要安装,这里国内部分地区有点小坑,虽然不难但还是要注意一下,

根据Docker官网的介绍,安装docker只需要一行命令:

==========================
curl -sSL https://get.docker.com/ | sh
==========================

但是,但是!我们在中国!这么做安装起来非常慢!幸好最近阿里开源镜像站恢复了,我们可以使用阿里镜像站加速,这是完全免费的
======================================
curl https://get.docker.com/ > ./docker_install.sh
======================================

这样会快很多的,下面查看一下Docker的信息

========================
sudo docker info
========================

不出意外的话,应该没问题了

当然,意外肯定是有的,比如我在Arm64的树莓派上运行docker,就出现了“无法限制容器内存使用”、“无法限制容器交换区内存使用”等警告,虽然不影响使用,但我表示非常不爽。。。

于是查了半个小时官方文档,终于找到了,解决办法如下,打开系统的`/boot/cmdline.txt`,加上如下内容

=======================
sudo vim boot/cmdline.txt
=======================




使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
开启了代码块转义,又把HTML标签禁用了,这代码块就离谱。。。

使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
这一楼开始构建自己的`Hello world`容器,本文内容与操作系统无关,Linux的Ubuntu啦,Win10啦,WSL2啦,都可以,只要成功安装了Docker就行。

首先新建一个文件夹·····,叫`hello`吧,后面把它叫做(项目)根目录

在根目录里创建文件夹 `src` ,用来储存Hello world的源代码

src里放一个你喜欢的C语言源代码,比如`hello.c`

(这次代码块我自己设置配色)
#include <stdio.h>

int main() {
    printf("Hello world!\n");
    printf("The `Hello world!` from docker.\n");

    return 0;
}




然后在根目录里创建`Dockerfile`(名字取自makedile),不需要后缀

内容如下:

FROM gcc AS Stap01
COPY src/hello.c .
RUN gcc -o hello hello.c

# ///////////////////////

FROM ubuntu
COPY --from=Stap01 hello .
CMD [ "./hello" ]


好的,代码部分完成,下面开始构建

使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
构建最简单了,一行命令
docker build -t your_user_name/hello-ubuntu

等就完事了,等进度条跑完,我们试试运行该镜像

docker run -it your_user_name/hello-ubuntu


完成,收工

使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
本帖最后由 skyone 于 2021-7-26 15:01 编辑

一直使用命令行肯定有点麻烦,下面我为Docker安装一个WebUI


先pull镜像


==========================
sudo docker pull portainer/portainer
==========================


创建数据文件夹


==========================
sudo mkdir /etc/portainer
==========================


启动容器


==========================
sudo docker run -d -p 9000:9000 \
                --name portainer \
                --restart always \
                -v /var/run/docker.sock:/var/run/docker.sock \
                -v /etc/portainer:/data \
                portainer/portainer

==========================

打开 http://你的域名或IP:9000

完成,docker就是这么简单


docker

docker

使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
再装一个GitLab-ce


如果你是懒人(我一直认为懒一定程度上推动了人类进步~),直接打开楼上安装的portainer -> App Templates -> gitlab-ce 输入名称,deploy就完事了


下面命令行安装


=============================
sudo docker pull gitlab/gitlab-ce
=============================


创建数据文件夹


=============================
sudo mkdir -p /data/gitlab/config
sudo mkdir -p /data/gitlab/logs
sudo mkdir -p /data/gitlab/data
GITLAB_HOME=/data/gitlab
=============================


运行容器


=======================================
sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  gitlab/gitlab-ee:latest
=======================================


如果443,80,22三个端口被占用,nginx反向代理即可


=======================================
sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 8443:443 --publish 880:80 --publish 822:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  gitlab/gitlab-ee:latest

=======================================

=======================================
vim /etc/nginx/conf.d/gitlab.conf
# 内容如下
server {
    listen       80;
    server_name  你的域名;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:880;
    }
}

server {
    listen       443 ssl;
    server_name  你的域名;

    ssl_certificate     你的SSL证书;
    ssl_certificate_key 你的SSL证书;


    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:8443;
    }
}


# 重启nginx
sudo systemctl restart nginx
=======================================

使用道具 举报

您需要登录后才可以回帖 登录 | 注册SCIFIFANS!

本版积分规则