持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
1.手动制作docker镜像
手动构建docker镜像的思路:
- 先运行一个容器 docker run
- 进入容器,安装所需程序 docker exec -it 容器名/id bash|/bin/bash
- 退出容器 exit
- 提交容器为镜像 docker commit 容器名/id 镜像名
1.1.手动构建centos镜像
1.1.1.配置容器
1.运行一个容器 [root@192.168.146.112/web]# docker run -d -it --privileged -p 222:22 --name centos8.2 centos:latest /usr/sbin/init
ddb12d283ca0992974691f864dd00ffe4dff4ad901a89441883484e066a216a9
--privileged: 指定容器是否为特权容器,特权容器拥有所有的功能
想要启动服务一定要首先运行/usr/sbin/init如果不运行init第一个进程的话启动服务会报错
报错内容: System has not been booted with systemd as init system (PID 1). Can't operate.
2.配置yum仓库 [root@192.168.146.112/web]# docker exec -it centos8.2 /bin/bash
[root@ddb12d283ca0 /]# rm -rf /etc/yum.repos.d/*
[root@ddb12d283ca0 yum.repos.d]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-8repo ;curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2318 100 2318 0 0 3501 0 --:--:-- --:--:-- --:--:-- 3501
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2595 100 2595 0 0 463 0 0:00:05 0:00:05 --:--:-- 628
3.安装并启动ssh服务
[root@ddb12d283ca0 yum.repos.d]# yum -y install openssh-server
[root@ddb12d283ca0 yum.repos.d]# systemctl start sshd
[root@ddb12d283ca0 yum.repos.d]# systemctl enable sshd 4.设置root口令
[root@ddb12d283ca0 yum.repos.d]# yum -y install passwd
[root@ddb12d283ca0 yum.repos.d]# echo "123456" | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
5.安装其他所需要的软件
[root@ddb12d283ca0 yum.repos.d]# yum -y install vim libvirt man lrzsz telnet
6.设置命令别名
[root@ddb12d283ca0 yum.repos.d]# vim .bashrc alias ls='ls --color'
7.通过ssh连接容器
ssh 192.168.146.112 222
测试没有写/usr/sbin/init
1.1.2.提交容器为镜像并测试
语法格式:
docker container commit 容器名/id 镜像名:版本
1.提交容器为镜像
[root@192.168.146.112/web]# docker container commit centos8.2 wzx_centos8.2:v1 sha256:00d5af063ea3e1b060b983d97b8a1111078081a8c179f74b1544e8fd9dbe82b1
2.查看镜像列表
[root@192.168.146.112/web]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wzx_centos8.2 v1 00d5af063ea3 41 seconds ago 527MB
3.验证容器是否可用
[root@192.168.146.112/web]# docker run -d -it -p 333:22 wzx_centos8.2:v1 /usr/sbin/sshd -D 3cfb66891f04b09e6b5071029e97a5111a653f67b9db1c9267aaadfa5e489785
[root@192.168.146.112/web]# docker ps -a -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cfb66891f04 wzx_centos8.2:v1 "/usr/sbin/sshd -D" 37 seconds ago Up 36 seconds 0.0.0.0:333->22/tcp, :::333->22/tcp charming_nightingale
4.登录容器
[root@192.168.146.112/web]# docker exec -it charming_nightingale /bin/bash
[root@3cfb66891f04 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 06:35 pts/0 00:00:00 /usr/sbin/sshd -D
root 7 0 0 06:37 pts/1 00:00:00 /bin/bash
root 23 7 0 06:37 pts/1 00:00:00 ps -e
1.2.手动构建nginx镜像
1.2.1.配置nginx容器
1.运行一个容器
[root@192.168.146.112~]# docker run -d -it --privileged -p 80:80 centos:latest /usr/sbin/init
c9eb83f6802d152cdeec0527e9eed340c663e46bb0611e4ba5b487ab7419c9e9
--privileged: 指定容器是否为特权容器,特权容器拥有所有的功能
想要启动服务一定要首先运行/usr/sbin/init如果不运行init第一个进程的话启动服务会报错,报错内容: System has not been booted with systemd as init system (PID 1). Can't operate.
2.进入容器
[root@192.168.146.112~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9eb83f6802d centos:latest "/usr/sbin/init" 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp infallible_lamarr
3cfb66891f04 wzx_centos8.2:v1 "/usr/sbin/sshd -D" 12 minutes ago Up 12 minutes 0.0.0.0:333->22/tcp, :::333->22/tcp charming_nightingale
ddb12d283ca0 centos:latest "/usr/sbin/init" 41 minutes ago Up 41 minutes 0.0.0.0:222->22/tcp, :::222->22/tcp centos8.2
[root@192.168.146.112~]# docker exec -it infallible_lamarr /bin/bash
[root@c9eb83f6802d /]#
3.配置yum仓库
[root@c9eb83f6802d /]# rm -rf /etc/yum.repos.d/*
[root@c9eb83f6802d /]# cd /etc/yum.repos.d/
[root@c9eb83f6802d yum.repos.d]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-8repo ;curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
4.安装nginx镜像
[root@c9eb83f6802d yum.repos.d]# yum -y install nginx
5.启动镜像
[root@c9eb83f6802d yum.repos.d]# systemctl start nginx
1.2.2.提交容器为镜像并测试
1.提交容器
[root@192.168.146.112~]# docker ps -a -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9eb83f6802d centos:latest "/usr/sbin/init" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp infallible_lamarr
[root@192.168.146.112~]# docker container commit c9eb83f6802d centos8.2_nginx:v1 sha256:84042258df232dbb7d064de689146788feb318f5ab3c0cda9cb02ffbe8ad707e
2.运行测试容器
[root@192.168.146.112~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos8.2_nginx v1 84042258df23 33 seconds ago 340MB
[root@192.168.146.112~]# docker run -d -it -p 81:80 centos8.2_nginx:v1 nginx -g 'daemon off;'
a9cc872da7476cfbe6826f632cd908b21b0ce108b3dc8e21567ff17db300f491
3.访问