关于
是一个开源的容器引擎与平台
基本概念
- 容器:一个包含了软件所有需要的资源和配置。是Docker运行的基本单元
- 镜像:创建容器的模板
- Dockerfile:一个文本文件(无后缀)用于构建Docker镜像
- 仓库:存放镜像的地方
- Docker Engine:运行docker容器
安装
# 安装依赖
dnf -y install dnf-plugins-core
# 安装源
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动
systemctl enable --now docker
如果无法拉取镜像,尝试修改DNS:
vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 8.8.8.8
nameserver 223.5.5.5
nameserver 1.1.1.1
# 重启生效
systemctl restart NetworkManager
或者
nmcli connection up ens160(你的网卡,tab出来)
基本用法
拉取镜像 :
使用
docker pull <镜像名>:<标签>
docker pull nginx:latest
运行容器 :
使用
docker run -d -p <主机端口>:<容器端口> --name <容器名> <镜像名>
docker run -d -p 8080:80 --name my-nginx nginx
查看容器 :
查看正在运行的容器
docker ps
查看所有容器(包括停止的):
docker ps -a
停止和启动容器 :
停止容器:
docker stop <容器ID或名称>
启动已停止的容器:
docker start <容器ID或名称>
删除容器 :
删除容器:
docker rm <容器ID或名称>
删除镜像 :
删除镜像:
docker rmi <镜像ID或名称>
进阶操作
进入容器
docker exec -it docker_id /bin/bash
将本地的8000端口映射到docker的80端口并在shell运行容器,挂载本地的/mnt到容器的/mnt下 可以+ --name指定名字
docker run -itd -d -p 8000:80 -v /mnt:/mnt rockylinux:9
12.docker服务
任务描述:请采用podman,实现有守护程序的容器应用。
(1)在linux2上安装docker-ce,导入rocky镜像。
(2)创建名称为skills的容器,映射本机的8000端口到容器的80端口,在容器内安装apache2,默认网页内容为“HelloDocker”。
(3)配置docker私有仓库。
[root@localhost ~]# docker load -i rockylinux9.tar
[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
rockylinux 9 656f801c021c 21 months ago 176MB
[root@localhost ~]# docker run -itd -d -p 8000:80 -v /mnt:/mnt rockylinux:9
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a0d334cf0d10 rockylinux:9 "/bin/bash" About a minute ago Up About a minute 0.0.0.0:8000->80/tcp, [::]:8000->80/tcp nostalgic_kirch
[root@localhost ~]# docker exec -it a0d334cf0d10 /bin/bash
[root@a0d334cf0d10 /]# cd /etc/yum.repos.d/
[root@a0d334cf0d10 yum.repos.d]# rm -rf *
[root@a0d334cf0d10 yum.repos.d]# vi a.repo
[root@a0d334cf0d10 yum.repos.d]# yum -y install httpd
[root@a0d334cf0d10 yum.repos.d]# echo "HelloDocker" > /var/www/html/index.html
# 等价于systemctl restart
[root@a0d334cf0d10 yum.repos.d]# /sbin/httpd
[root@a0d334cf0d10 yum.repos.d]# curl 127.0.0.1
HelloDocker
配置docker私有仓库。
Last login: Mon Nov 25 16:50:00 2024 from 192.168.10.1
[root@master ~]# docker run -d -p 5000:5000 --restart=always --name registry registry:2
Unable to find image 'registry:2' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
[root@master ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
dc0decf4841d: Pull complete
6cb0aa443e23: Pull complete
813676e291ef: Pull complete
dc2fb7dcec61: Pull complete
916205650bfe: Pull complete
Digest: sha256:543dade69668e02e5768d7ea2b0aa4fae6aa7384c9a5a8dbecc2be5136079ddb
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@master ~]# docker run -d -p 5000:5000 --restart=always --name registry registry
066f158aac0d04bed279768ae806ebf36117c60b803851cd6bf852783a1130b8
[root@master ~]# vim /etc/docker/daemon.json
[root@master ~]# systemctl restart docker
使用Podman
任务描述:请采用豌豆男人,实现无守护程序的容器应用。
(1)在linux3上安装podman,导入rocky镜像。
(2)创建名称为skills的容器,映射本机的8000端口到容器的80端口,在容器内安装apache2,默认网页内容为“HelloPodman”。
# AppStream网络源自带
dnf -y install podman
# 导入镜像
podman load -i rockylinux9.tar
# 挂载系统镜像
mount /dev/cdrom /mnt
# 启动容器
podman run -it -d -p 8000:80 -v /mnt:/mnt localhost/rockylinux:9
# 进入容器
# 首先确定容器id
[root@localhost ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83673af97759 localhost/rockylinux:9 /bin/bash About a minute ago Up About a minute 0.0.0.0:8000->80/tcp gifted_cray
# 进入
podman exec -it gifted_cray /bin/bash
-i:交互模式,保持 STDIN 打开
-t:分配一个伪终端
gifted_cray:容器的名称
/bin/bash:要在容器中执行的命令
# 配置apache服务
[root@da9642b080d4 mnt]# ls /mnt
ls: cannot open directory '/mnt': Permission denied
# 这种情况下记得关闭主机selinux
yum -y install httpd
echo "HelloPodman" > /var/www/html/index.html
/sbin/httpd
[root@da9642b080d4 yum.repos.d]# curl 127.0.0.1
HelloPodman
没有评论