(面试小牛)Docker命令

今天学习一下之前面试被问到的docker的一些相关命令:

一。安装docker

1.卸载之前安装过的旧版本docker

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

2.如果电脑没有安装yum,可以用下列命令安装yum

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

3.配置docker安装镜像源:

默认yum命令回去国外的服务器上下载docker,速度太慢,所以我们需要更换一下docker安装的镜像源。

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

4.安装docker:

yum install -y docker-ce

-y 就是指在下载的过程中不管他问什么我们一路都选择yes

-ce是指下载的是社区免费版

5.启动docker前,一定要记得关闭防火墙 

systemctl stop firewalld

//查看防火墙状态
systemctl status firewalld

6.启动docker

systemctl start docker

//重启docker
systemctl restart docker 

//停止docker
systemctl stop docker

//查看docker状态
systemctl status docker

7.安装完成后,可以通过docker -v去查看docker的安装版本

docker -v

二。镜像操作

8.下拉镜像(不指定版本默认拉取最新版本)

docker pull nginx:1.23

9.查看docker已经拉取的镜像

docker images

//删除未使用的镜像
docker image prune

//镜像打包为文件
docker image save id号 -o name(名称:redis5.tar)  打包tar

//文件载入镜像
docker image load -i redis5.0.tar  将tar包 导入

10.修改镜像tag(镜像版本)

docker image tag b692a91e4e15 ng:11      //根据镜像id修改

按照上述操作执行完命令后docker images查看镜像会出现两个版本的镜像,如果我们rmi会报错(因为这两个镜像的id一样)

解决1  根据name和tag删除

docker rmi nginx:1.23

11.删除镜像

docker rmi ID

三。操作容器

12.创建容器

docker run --name 容器名字 -p 宿主机端口:容器端口 -d 镜像名称

13. 查看正在运行的镜像名称

docker ps

//强制查看所有没启动的容器
docker ps -a

14.进入容器

docker exec -it 容器名字

//用mysql容器举个例子(安装完成mysql后,我们需要进入容器输入账号密码才能连接上mysql)
docker exec -it mysql mysql -uroot -p123456

15.删除容器

docker rm 容器id

16.查看正在进行的容器名称

docker top 容器id

17.杀死一个正在运行的容器

docker kill 容器id

四。数据卷

首先我用自己的语言大致说一下数据卷的作用吧:

当docker中同时有两个容器同时需要一组数据,我们可以在这时候在本地先写一个文件,然后将本地的这个文件挂载到容器中的制定目录

18.在Docker中,可以使用-v--volume标志将主机上的目录或文件挂载到容器中。如果你想要将一个指定的数据卷绑定到一个特定的容器,你可以使用以下命令:

docker run -d --name my-container -v /path/to/my/data:/path/in/container image-name


//-v 目录映射   宿主机不存在的目录可以自动创建

如果宿主机的目录存在并且有文件,会直接覆盖容器目录中的文件

在这个命令中,/path/to/my/data是主机上的数据卷的路径,而/path/in/container是你希望在容器内挂载该数据卷的路径。image-name是你的容器镜像的名称。

19.复制文件到宿主机

docker cp /path/in/container image-name /path/to/my/data

五。具体案例(nginx)

下载nginx

docker pull nginx:1.23
启动nginx
docker run -p 8081:80 --name nginx1 -d nginx:1.23
创建挂载目录
# 创建挂载目录
mkdir -p /home/docker/nginx/conf
mkdir -p /home/docker/nginx/log
mkdir -p /home/docker/nginx/html
复制文件到宿主机
docker cp nginx1:/etc/nginx/nginx.conf /home/docker/nginx/conf/nginx.conf
 
docker cp nginx1:/etc/nginx/conf.d  /home/docker/nginx/conf/conf.d
 
docker cp nginx1:/usr/share/nginx/html /home/docker/nginx/www
删除容器nginx1
docker rm -f nginx1
重新启动新容器nginx
docker run \
-p 8081:80 \
--name nginx \
-v  /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/docker/nginx/logs:/var/log/nginx \
-v /home/docker/nginx/www:/usr/share/nginx/html \
-d nginx:1.23

上面的四个-v就是将本地的宿主机文件重新挂载到容器内并且持久化数据卷

之后在/home/docker/nginx/www目录下创建index.html 
在index.html随便写入内容,再访问  ip:8081/index.html

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值