Docker入门

环境准备与搭建

运行环境: CentOS7

安装Docker:

下载关于Docker的依赖环境

# 1.下载关于Docker的依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
# 2.设置下载Docker的镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3.安装Docker
yum makecache fast
yum -y install docker-ce
# 4.启动Docker,并设置为开机自动启动,测试
# 启动Docker服务
systemctl start docker
# 设置开机自动启动
systemctl enable docker
# 测试
docker run hello-world

设置阿里云镜像仓库:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://31q5iq8m.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker基础命令

  • docker version 查看docker版本号及详细信息

    image-20210904213911888

与docker version 相似的 命令 有 docker info 显示 Docker 系统信息,包括镜像和容器数

image-20210904214147850

  • docker --help docker 的帮助命令

    image-20210904214432480

docker search +搜索镜像名

image-20210904220102416

  • docker pull 镜像名[:tag] 例如:docker pull mysql:8.0 拉取镜像

    image-20210904220445008

docker rmi + 镜像id 移除镜像

容器命令

docker run [可选参数] image 启动容器

--name='自定义容器名字' # 容器名称 Tomcat1 Tomcat2 用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行 进入容器查看内容
-p # 指定容器端口 -p 主机端口: 容器端口

例如 docker run -it -d centosId /bin/bash

[root@iZbp17g2ontiv6b4tu0incZ ~]# docker run -it 300e315adb2f /bin/bash
[root@a0f6172ef990 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@a0f6172ef990 /]#

docker ps 查看正在运行的容器

-a # 列出所有正在运行的容器+ 历史运行过的容器
-q # 只显示容器id

删除docker中的镜像,我们可以使用如下命令:

docker rmi 镜像id

删除docker中的容器可以使用如下命令:

docker rm 容器id

image-20210904222937599

启动和停止容器

docker start 容器id  # 启动容器

docker restart 容器id # 重启容器

docker stop 容器id # 停止容器

docker kill 容器id # 强制杀掉容器进程

后台启动容器

# docker run -d  镜像名

docker run -d centos 运行

然后docker ps 发现容器停止了

# 常见的坑: docker 容器使用后台启动 必须要有一个前台程序 docker 发现没有应用在运行就会自动停止
# nginx 容器启动后 发现自己没有提供服务 就会立刻停止

image-20210904224520398

docker inspect 266d1269bb29

docker inspect 命令,该命令用于获取容器/镜像的元数据,其中 -f 参数可以用于获取指定的数据,例如使用 docker inspect -f (双括号).IPAddress 来获取容器的 IP 地址

[root@iZbp17g2ontiv6b4tu0incZ ~]# docker inspect 266d1269bb29
[
{
"Id": "sha256:266d1269bb298d6a3259fc2c2a9deaedf8be945482a2d596b64f73343289a56c",
"RepoTags": [
"tomcat:latest"
],
"RepoDigests": [
"tomcat@sha256:1af502b6fd35c1d4ab6f24dc9bd36b58678a068ff1206c25acc129fb90b2a76a"
],
"Parent": "",
"Comment": "",
"Created": "2021-08-18T20:48:04.549796116Z",
"Container": "d2ecb6a64fdc3e7fef05d7909154d295574519fa144d8507cf7c9a5a6c5ea8b3",
"ContainerConfig": {
"Hostname": "d2ecb6a64fdc",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},

进入当前正在运行的容器(常用)

docker exec -it 容器id /bin/bash

[root@iZbp17g2ontiv6b4tu0incZ ~]# docker exec -it 300e315adb2f  /bin/bash
Error: No such container: 300e315adb2f

docker attach 容器id /bin/bash

从容器中拷贝文件出来

image-20210904230139772

小结

image-20210904230416166