Docker容器操作

1、Docker容器

1.1 虚拟机与容器区别

Namespace 通过命名来隔离资源的,Cgroup 限制资源;

容器不仅是一种虚拟化技术,更是一种应用的打包机制;

1.2 docker架构

2、Docker 环境搭建

最牛docker安装,解决一切pull,配置等问题-优快云博客 

可以看上面链接搭建好环境;(链接是一种搭建方法,下面的也是一种,我推荐链接的)

但是安装这些包之前,需要配置yum源(配置本地yum源)配置yum源

mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/

cat <<EOF > /etc/yum.repos.d/abc.repo
[baseos]
name = baseos
baseurl = file:///mnt/BaseOS/
gpgcheck = 0

[app]
name = app
baseurl = file:///mnt/AppStream/
gpgcheck = 0
EOF

yum clean all
yum repolist all

安装基础包

yum install -y vim net-tools bash-completion yum-utils

#注意这个yum-utils 包,为什么要安装它,因为下一步需要用到这个工具,去下载docker-ce的一个repo文件。repo文件里面就定义好了docker的安装源。

2.1 下载docker-ce repo包

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这条命令会自动的把文件放在/etc/yum.repos.d目录下

2.2、安装docker

yum list docker-ce --showduplicate | sort -r  --查看版本
yum install -y docker-ce  --默认安装的就是最新版本
yum install -y docker-ce-23.0.6 docker-ce-cli-23.0.6  --安装指定版本
查看下当前docker版本
[root@docker ~]# docker -v
Docker version 25.0.4, build 1a576c5

2.2、启动docker

[root@docker ~]# bash
[root@docker ~]# systemctl start docker.service --启动docker服务
[root@docker ~]# systemctl enable docker.service  --开机自启

2.3、了解docker镜像和容器的关系

 想要创建容器,前提必须得有镜像。

2.4、 镜像操作

查看本地镜像

docker images

一般来说需要配置阿里云来配置加速器

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://cc2d8woc.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl restart docker

pull相对应的镜像这边有教程

 Y-passion/docker_image_pusher: 使用Github Action将国外的Docker镜像转存到阿里云私有仓库,供国内服务器使用,免费易用icon-default.png?t=O83Ahttps://github.com/Y-passion/docker_image_pusher

 

 2.5、docker操作:

IMAGE 是你想要打标签的镜像名。

TAG 是你想要指定的标签,通常用来表示镜像的版本。

REGISTRYHOST 是仓库的地址,例如 registry.cn-hangzhou.aliyuncs.com。

USERNAME 是你的阿里云账号名。

NAME 是仓库中的镜像名。

#拉取镜像
docker pull []REPOSITORY(仓库地址):TAG(标签)

#删除镜像用rmi命令
Docker rmi REPOSITORY(仓库地址):TAG(标签)

#删除容器用rm命令
docker rm CONTAINER ID

#导出导入镜像 save -o
docker save REPOSITORY(仓库地址):TAG(标签) -o name.tar

#重命名/改名通过tag命令
docker tag REPOSITORY(仓库地址):TAG(标签) 空格 (仓库地址):TAG(标签) 

#镜像推送
镜像推送的前提:
1.当前推送的环境必须登录到你的私有仓库里面,才能推送。
2.镜像必须通过tag改名之后,才能推送。
(确保使用完整的仓库路径,包括仓库地址和标签)

 2.6 查询容器

docker ps 查询当前正在运行中的容器
docker ps -a 查询是当前环境所有容器(运行/非运行)

3、容器简单实操:

3.1 运行一个容器:

为容器添加一个伪终端 -t  为容器添加一个交互 -i 

[root@docker ~]# docker run -t -i centos:latest 

用完容器想删除,利用rm命令即可

[root@docker ~]# docker rm -f 8

#8代表的是CONTAINER ID

 为容器添加持续运行  用  --restart alway

[root@docker ~]# docker run -t -i --restart always centos:latest 

为容器添加后端运行参数-d

[root@docker ~]# docker run -t -i -d --restart always centos:latest

 3.2、进入容器

进入容器有两种方法:

  1. attach:仅能进入默认进程为 /bin/bash或 /bin/sh 的容器,通过attach进入容器,之后exit退出,那么容器会重启。不太推荐使用这个。 docker attach 4
  2. exec:所有容器都可以进入 docker exec -ti 4 /bin/bash(推荐

进入容器用--name命名容器名字,并且修改名字

[root@docker ~]#  docker run -tid --name R1 --restart always centos:latest
effe06cffa0fde60815e9a86894e3d0d5eb13ac03c1ca8c683da01cba0138b6f
[root@docker ~]# docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES
effe06cffa0f   centos:latest   "/bin/bash"   4 seconds ago   Up 4 seconds             R1

[root@docker ~]# docker rename R1 r1
[root@docker ~]# docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
effe06cffa0f   centos:latest   "/bin/bash"   53 seconds ago   Up 52 seconds             r1

3.3、指定容器的生命周期

[root@docker ~]# docker run -tid --name os1 centos:latest sleep 30
#30秒后自动退出,可以看到CREATED的变化    6变到9

77bf401a6b6da565302fa65a6f19a9ea81d9a39d42e5527f9a8af51806fb612c
[root@docker ~]# docker ps
CONTAINER ID   IMAGE           COMMAND      CREATED         STATUS         PORTS     NAMES
77bf401a6b6d   centos:latest   "sleep 30"   6 seconds ago   Up 5 seconds             os1
[root@docker ~]# docker ps
CONTAINER ID   IMAGE           COMMAND      CREATED         STATUS         PORTS     NAMES
77bf401a6b6d   centos:latest   "sleep 30"   9 seconds ago   Up 9 seconds             os1

 3.4、容器启动/关闭/重启

[root@docker ~]# docker run -tid --name os1 --restart always centos
8e55bf36ce38a95a683599a65166f51725095cfe5536fd02251d7a835a20570a
[root@docker ~]# docker stop os1
os1
[root@docker ~]# docker start os1
os1
[root@docker ~]# docker restart os1

3.5 、进入mysql。查询容器日志:logs,为容器指定环境变量-e

 没有mysql的先docker pull mysql 

docker run -tid --name R1 --restart always -e MYSQL_ROOT_PASSWORD=666666 mysql:latest

[root@docker ~]# docker run -tid --name R1 --restart always -e MYSQL_ROOT_PASSWORD=666666 mysql:latest
688764fe413121dbc4bba4af74a2c91ec83d7affff676eb07351f38dc56a14ef
[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                 NAMES
688764fe4131   mysql:latest   "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   3306/tcp, 33060/tcp   R1

docker exec -ti R1 /bin/bash
mysql -uroot -predhat

4、总结:常用的docker指令

docker search 搜索镜像

docker pull 拉取镜像

docker run 创建容器并运行容器

docker create 创建容器但不运行容器

docker attach/exec 进入容器

docker logs 查看容器日志

docker inspect 查看容器底层信息(IP)

docker history 查看镜像历史信息(对外暴露端口号,进程等等)

docker start 启动容器

docker stop 关闭容器

docker restart 重启容器

docker rm 删除容器

docker rmi 删除镜像

docker ps 查看正在运行的容器

docker ps -a 查看所有容器

docker port 查看容器映射端口

docker cp 容器和主机之间进行文件拷贝

docker push 推送镜像

docker tag 对镜像进行设置别名(标签)

docker help

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值