Docker 基础语法

104 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

1. 删除旧的docker版本

可能有些Linux预先安装Docker,但一般版本比较旧,所以可以先执行以下代码来删除旧版本的Docker。

dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2. 安装docker

指定安装版本

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

使用yum安装docker

yum install docker-ce docker-ce-cli containerd.io

启动docker

# 启动docker守护进程
systemctl start docker

打印docker版本

# 打印docker版本
docker version 

3. 镜像

拉取镜像

# 拉取hello-world镜像
docker pull hello-world

查看镜像列表

# 列出所有镜像
docker image ls
# 列出所有镜像 
docker images

从仓库拉取镜像

前面我们已经演示过使用docker pull命令拉取了hello-world镜像了,当然使用docker image pull命令也是一样的。 一般默认是从Docker Hub上拉取镜像的,Docker Hub是Docker官方提供的镜像仓库服务(Docker Registry),有大量官方或第三方镜像供我们使用,比如我们可以在命令行中输入下面的命令直接拉取一个Centos镜像:

# docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull centos

拉取一个镜像,需要指定Docker Registry的地址和端口号,默认是Docker Hub,还需要指定仓库名和标签,仓库名和标签唯一确定一个镜像,而标签是可能省略,如果省略,则默认使用latest作为标签名,另外,仓库名则由作者名和软件名组成。 那么,我们上面使用centos,那是因为省略作者名,则作者名library,表示Docker官方的镜像,所以上面的命令等同于:

docker pull library/centos:latest

因此,如果拉取非官方的第三方镜像,则需要指定完整仓库名,如下:

docker pull mysql/mysql-server:latest

删除镜像

当本地有些镜像我们不需要时,那我们也可以删除该镜像,以节省存储空间,不过要注意,如果有 使用该镜像创建的容器未删除,则不允许删除镜像。

# image_name表示镜像名,image_id表示镜像id 
docker image rm image_name/image_id

删除镜像的快捷命令:

docker rmi image_name/image_id

4. 容器

运行容器

Docker run 命令 Docker的镜像是用于生成容器的模板,镜像分层的,镜像与容器的关系,就是面向对象编程中类与对象的关系,我们定好每一个类,然后使用类创建对象,对应到Docker的使用上,则是构建好每一个镜像,然后使用镜像创建我们需要的容器。 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

docker run -p 3306:3306 --name nnaammee -v /data:/data -d mysql:latest /bin/bash
docker run hello-world

另外一种启动容器的方式就是启动一个已经停止运行的容器:

# container_id表示容器的id
docker start container_id

查看容器

如果要查看本地所有的容器,可以使用docker container ls命令:

# 查看所有容器
docker container ls

查看所有容器也有简洁的写法,如下:

# 查看所有开启的容器
docker ps
# 查看所有容器
docker ps -a

停止容器

停止容器的命令如下:

docker stop <容器 ID>

删除容器

我们也可以使用docker container rm命令,或简洁的写法docker rm命令来删除容器,不过不允许删除正在运行的容器,因此如果要删除的话,就必须先停止容器,

# container_id表示容器id,通过docker ps可以看到容器id
$ docker rm container_id

当我们需要批量删除所有容器,可以用下面的命令:

# 删除所有容器
docker rm $(docker ps -q)
# 删除所有退出的容器
docker container prune

进入容器

# 进入容器,container_id表示容器的id,command表示linux命令,如/bin/bash
docker exec -it container_id /bin/bash

退出容器

exit

5. 日志

查看容器日志

docker logs container_name

6. 应用

ps docker mysql

docker run -p 3307:3306 --name mysql-04-123456 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server