Docker 制作容器镜像

2022-03-27  本文已影响0人  Rinaloving

使用 docker commit命令

docker commit : 提交一个正在运行的容器为一个新的镜像

  1. 拉取一个基础镜像(其实就是os)

默认拉取的是最新版本centos, 这里我们指定7(docker pull centos:7)

docker pull centos

[root@localhost ~]# docker pull centos:7
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
  1. 创建以恶搞交互式容器

这种方式无法部署 .net core 后台(因为无法设置容器启动,后台也跟着启动)

docker run -it --name mycentos centos:7 /bin/bash

使用这种方式创建容器

docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init

查看是否创建成功

[root@localhost ~]# docker images
REPOSITORY                                             TAG                IMAGE ID       CREATED        SIZE
dockernjdk                                             latest             6650bd7b294a   2 days ago     548MB
registry.cn-hangzhou.aliyuncs.com/rina/my_dockernjdk   v1                 6650bd7b294a   2 days ago     548MB
dockerdemo                                             latest             a42c8ba3496d   3 days ago     212MB
registry.cn-hangzhou.aliyuncs.com/rina/my_nginx        v1                 f2f70adc5d89   7 days ago     141MB
1426429456/my_nginx                                    v1                 f2f70adc5d89   7 days ago     141MB
nginx                                                  latest             f2f70adc5d89   7 days ago     141MB
mcr.microsoft.com/dotnet/aspnet                        3.1                f0220ee3f874   7 days ago     208MB
centos                                                 7                  eeb6ee3f44bd   6 months ago   204MB
mcr.microsoft.com/dotnet/core/aspnet                   2.1-stretch-slim   1a48139335f8   7 months ago   253MB

启动容器

[root@localhost ~]# docker run -it --name mycentos centos:7 /bin/bash

要想.net core 后台能启动,这里也必须这样创建

docker run -d --name centos7 --privileged=true centos:7 /usr/sbin/init

进入容器

docker exec -it centos7 /bin/bash # 进入容器

修改配置

 SSH  Connecting to 192.168.70.131
 SSH  Host key fingerprint:
 SSH   SHA256  a1f00e21b2a2f60d3d1f6c4d50cd1854ffc1a5df106810d0cb8558fee018e6cf 
 SSH  Trying saved password
Last login: Fri Mar 25 18:41:47 2022 from 192.168.70.1
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                       NAMES
b04263a3ee14   mynjdk         "/usr/sbin/init"         7 minutes ago    Up 7 minutes    0.0.0.0:8888->5003/tcp, :::8888->5003/tcp   t1
f325c82add38   centos:7       "/usr/sbin/init"         46 minutes ago   Up 46 minutes                                               mycentos7
4194e389a5e1   nginx:latest   "/docker-entrypoint.…"   43 hours ago     Up 10 hours     0.0.0.0:81->80/tcp, :::81->80/tcp           my_nginx_2022
[root@localhost ~]# docker restart b04263a3ee14
b04263a3ee14
[root@localhost ~]# 

这样从外面就可以访问了

  1. 软件上传:上传到宿主机(自己的项目)
[root@localhost ~]# cd  /usr/local
[root@localhost local]# ls
aspnetcore-runtime-2.1.30-linux-x64.tar.gz  bin  dotnet-sdk-2.1.526-linux-x64.tar.gz  etc  games  include  lib  lib64  libexec  NJDK  sbin  share  src  www  XXFB
[root@localhost local]# docker cp dotnet-sdk-2.1.526-linux-x64.tar.gz  mycentos:/usr/local
  1. 安装.net core 2.1 环境
[root@26a7ed9e7aa7 local]# yum -y install libicu
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
 * base: mirrors.cn99.com
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
base                                                                                                                                                                                                        | 3.6 kB  00:00:00     
extras                                                                                                                                                                                                      | 2.9 kB  00:00:00     
updates                                                                                                                                                                                                     | 2.9 kB  00:00:00     
(1/4): base/7/x86_64/group_gz                                                                                                                                                                               | 153 kB  00:00:00     
(2/4): extras/7/x86_64/primary_db                                                                                                                                                                           | 246 kB  00:00:00     
(3/4): base/7/x86_64/primary_db                                                                                                                                                                             | 6.1 MB  00:00:01     
(4/4): updates/7/x86_64/primary_db                                                                                                                                                                          |  14 MB  00:00:10     
Resolving Dependencies
--> Running transaction check
---> Package libicu.x86_64 0:50.2-4.el7_7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================================================================== Package                                               Arch                                                  Version                                                     Repository                                           Size
===================================================================================================================================================================================================================================Installing:
 libicu                                                x86_64                                                50.2-4.el7_7                                                base                                                6.9 M

Transaction Summary
===================================================================================================================================================================================================================================Install  1 Package

Total download size: 6.9 M
Installed size: 24 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/libicu-50.2-4.el7_7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY==========================================================- ] 4.6 MB/s | 6.8 MB  00:00:00 ETA 
Public key for libicu-50.2-4.el7_7.x86_64.rpm is not installed
libicu-50.2-4.el7_7.x86_64.rpm                                                                                                                                                                              | 6.9 MB  00:00:00     
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-9.2009.0.el7.centos.x86_64 (@CentOS)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libicu-50.2-4.el7_7.x86_64                                                                                                                                                                                      1/1 
  Verifying  : libicu-50.2-4.el7_7.x86_64                                                                                                                                                                                      1/1 

Installed:
  libicu.x86_64 0:50.2-4.el7_7                                                                                                                                                                                                     

Complete!
[root@26a7ed9e7aa7 local]# sudo mkdir -p /usr/dotnet/dotnet-2.1 && sudo tar zxf dotnet-sdk-2.1.526-linux-x64.tar.gz -C /usr/dotnet/dotnet-2.1
bash: sudo: command not found
[root@26a7ed9e7aa7 local]# mkdir -p /usr/dotnet/dotnet-2.1 &&  tar zxf dotnet-sdk-2.1.526-linux-x64.tar.gz -C /usr/dotnet/dotnet-2.1
[root@26a7ed9e7aa7 local]# sudo ln -s /usr/dotnet/dotnet-2.1/dotnet /usr/local/bin
bash: sudo: command not found
[root@26a7ed9e7aa7 local]#  ln -s /usr/dotnet/dotnet-2.1/dotnet /usr/local/bin

查看.net 是否安装成功

[root@26a7ed9e7aa7 local]# dotnet --version
2.1.526
[root@26a7ed9e7aa7 local]# 

设置.net core 开机启动

# 在 etc/systemd/system 下创建 xxfb.service (名字自己取)
例如:
vi /etc/systemd/system/xxfb.service
# 编辑 xxfb.service(注意,下面的注释一定要去掉)

[Service]
Type=simple
GuessMainPID=true
WorkingDirectory=/usr/local/XXFB/                                            //项目路径
StandardOutput=journal
StandardError=journal
ExecStart=/usr/local/bin/dotnet WebApi.dll                                           //启动指令
Restart=always

[Install]
WantedBy=multi-user.target
[root@localhost system]# 
# 使自启动生效
systemctl enable xxfb.service

# 立即启动项目服务
systemctl start xxfb.service

systemctl stop myoacore.service
systemctl restart myoacore.service
systemctl list-units --type=service

制作容器镜像

docker commit mycentos7 mynjdk

启动容器镜像

下面这种方式不可以创建进程

[root@localhost local]# docker run -itd --name=t1 -p 8888:5003 mynjdk /bin/bash

如果非要在docker中另起进程,使用以下方式(为了.net core 后台能在镜像启动时自动运行,实际上就是添加开机启动)

docker run -itd --name=t1 --privileged=true -p 8888:5003 mynjdk /usr/sbin/init
docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init
9c472c136e81ef15264df2753de65ee326474291b13d44b9d8df93ec8892c4cb
[root@localhost local]#

可以看到 names 一列有 t1 mynjdk 容器镜像

[root@localhost local]# docker images
REPOSITORY                                             TAG                IMAGE ID       CREATED          SIZE
mynjdk                                                 latest             baa38885351e   2 minutes ago    1.24GB
<none>                                                 <none>             1f054c9c1490   47 minutes ago   1.19GB
dockernjdk                                             latest             6650bd7b294a   2 days ago       548MB
registry.cn-hangzhou.aliyuncs.com/rina/my_dockernjdk   v1                 6650bd7b294a   2 days ago       548MB
dockerdemo                                             latest             a42c8ba3496d   3 days ago       212MB
1426429456/my_nginx                                    v1                 f2f70adc5d89   7 days ago       141MB
nginx                                                  latest             f2f70adc5d89   7 days ago       141MB
registry.cn-hangzhou.aliyuncs.com/rina/my_nginx        v1                 f2f70adc5d89   7 days ago       141MB
mcr.microsoft.com/dotnet/aspnet                        3.1                f0220ee3f874   8 days ago       208MB
centos                                                 7                  eeb6ee3f44bd   6 months ago     204MB
mcr.microsoft.com/dotnet/core/aspnet                   2.1-stretch-slim   1a48139335f8   7 months ago     253MB
[root@localhost local]# docker ps -a 
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS                      PORTS                                       NAMES
9c472c136e81   mynjdk              "/bin/bash"              49 seconds ago   Up 48 seconds               0.0.0.0:8888->5003/tcp, :::8888->5003/tcp   t1
f325c82add38   centos:7            "/usr/sbin/init"         19 minutes ago   Up 19 minutes                                                           mycentos7
26a7ed9e7aa7   centos:7            "/bin/bash"              4 hours ago      Exited (1) 21 minutes ago                                               mycentos
4194e389a5e1   nginx:latest        "/docker-entrypoint.…"   42 hours ago     Up 10 hours                 0.0.0.0:81->80/tcp, :::81->80/tcp           my_nginx_2022
d5cef486db6c   dockernjdk:latest   "dotnet WebApi.dll"      2 days ago       Exited (0) 2 days ago                                                   dockernjdk
e91d88e285c7   dockerdemo:latest   "dotnet DockerDemo.d…"   3 days ago       Exited (0) 2 days ago                                                   dockerdemo
[root@localhost local]# 

进入mynjdk 修改 .net core 后台的配置(ip地址已经变了)

 docker ps
CONTAINER ID   IMAGE          COMMAND            CREATED         STATUS         PORTS                                       NAMES
4d3a1dc21a5a   28c48dc5e983   "/usr/sbin/init"   6 minutes ago   Up 6 minutes   0.0.0.0:8888->5003/tcp, :::8888->5003/tcp   t1

进入容器

[root@localhost ~]# docker exec -it 4d3a1dc21a5a /bin/bash

进入(.net core)项目所在目录

[root@4d3a1dc21a5a /]# cd /usr/local/NJDK/

查看ip地址

[root@4d3a1dc21a5a NJDK]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 117  bytes 46628 (45.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 110  bytes 13668 (13.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

修改配置

[root@4d3a1dc21a5a NJDK]# vi appsettings.json

重启容器

[root@4d3a1dc21a5a NJDK]# docker restart 4d3a1dc21a5a
上一篇 下一篇

猜你喜欢

热点阅读