1、docker安装方式

官方文档  [https://docs.docker.com/engine/install/ubuntu/]

注意添加 源的时候不要选择官方的

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ #官方
   $(lsb_release -cs) \
   stable"

1.1 更改镜像源

修改文件 /etc/docker/daemon.json 没有的话新建

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}

1.2 非root用户启动docker没有权限

sudo groupadd docker     #添加docker用户组
sudo gpasswd -a youusername docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组

2、卸载docker

# 1、卸载软件
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# 2、删除相关
sudo rm -rf /var/lib/docker

3、命令

 3.1 帮助命令

docker version
docker info      #显示docker详细信息,包括容器和镜像的数量
docker 命令 --help

帮助文档地址 [https://docs.docker.com/reference/]

3.2 镜像命令

docker images

root@ubuntu:~# docker images # 查看本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 14 months ago 13.3kB
REPOSITORY   镜像的仓库源
TAG 镜像标签
IMAGE ID 镜像ID
CREATED 创建时间
SIZE 大小

docker search

root@ubuntu:~# docker search mysql # 搜索镜像
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10557     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   3942      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   774                  [OK]

--filter=STARS=3000 # 结果过滤STARS大于3000的

docker pull

# 下载镜像 docker pull 镜像名:tag
root@ubuntu:~# docker pull mysql # 不加tag会默认下载最新版本 Using default tag: latest latest: Pulling from library/mysql 45b42c59be33: Pull complete # 分层下载,docker image的核心,将文件分块下载,块文件可对不同版本复用 b4f790bd91da: Downloading 325ae51788e9: Downloading adcb9439d751: Download complete ...
Disgest:sha256:2jhj6jere5oiojnnm9dsd... # 镜像的hash值
Status:Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # docker的真实地址

# 等价于
docker pull mysql
docker pull docker.io/library/mysql:latest

docker rmi

docker rmi -f docker_id   # 删除一个镜像,镜像id或者镜像名
docker rmi -f docker_id1 docker_id2 
docker rmi -f $(docker images -aq) # 删除全部停止的镜像

3.3 容器命令

新建容器并启动

docker run [option] image_id

# 参数说明
--name="your_name" # 容器名称
-d # 表示以后台方式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器端口,小P
-p 主机ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口 # 不与主机通讯
容器端口
-P # 随机指定容器端口,大p
-rm # 容器启动后,退出就删除容器。一般用来测试,用完即删

# 测试

root@ubuntu:~# docker run -it centos /bin/bash   # 进入容器,并且指定控制台
[root@ee50d14f28e4 /]#

 

wulc@ubuntu:~$ docker run -d --name nginx01 -p 3344:80 nginx   # 在后台启动名叫nginx01的容器,容器内部端口号80,主机端口号3344
49afe9536bc3e645c5136171aa528eb15338dcf3c366ee209c5d801bdffa2e61

wulc@ubuntu:~$ curl localhost:3344                             # 主机访问3344端口
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

端口暴露示意图

 

列出所有运行的容器

# docker ps [option]
docker ps       # 正在运行中的容器
-a              # 所有历史运行过的容器
-n=?            # 显示最近的前n个容器
-q               # 只显示容器的编号

 退出容器

exit    # 容器直接停止并退出
ctrl + P + Q # 容器退出但是不停止

删除容器

docker rm 容器id               # 删除指定的容器,正在运行的先停止
docker rm -f $(docker ps -aq) # 删除全部的容器
docker ps -a -q | xargs docker rm # 删除全部容器

启动和停止容器的操作

docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id # 强制停止容器

 

3.4 常用的其他命令

后台启动容器

docker rum -d centos  
# 问题docker ps,发现 centos 停止了,容器后台运行,就必须有一个前台应用,docker发现没有前台服务,会停止

查看日志

docker logs # 查看日志

-f # 持续打印log
-n # 输出log条数
--tail 10 # 显示最新10条
-t # 时间戳

# 测试
docker run -d centos /bin/sh -C "while true;do echo hello;sleep 1;done"
docker logs -tf --tail 10 35670d735c97

查看容器中的进程信息、容器信息

# top 命令
docker top 容器id # 查看容器内部的进程
docker status # 查看启动的容器的cpu内存信息

查看容器的源数据

docker inspect 容器id 
# 显示当前容器的详细信息,包括容器镜像,网络,挂载等等。

进入当前正在运行的容器

方法一:  docker exec -it 容器id bashShell    # 进入之后会打开一个新的终端
方法二: docker attach 容器id # 进入容器正在执行的终端
docker run -d centos /bin/sh -C "while true;do echo hello;sleep 1;done" 进入控制台会一直打印。

从容器内拷贝文件到主机上

# 在主机中
docker cp 容器id:容器内路径 目的主机路径
# 可以手动拷贝,也可以使用 -v 卷实现自动

4. 小结

posted on 2021-02-27 17:15  wulc++  阅读(114)  评论(0编辑  收藏  举报