我们以使用Docker的方式安装MySQL为例,快速体会Docker的基本操作
1、镜像操作
1、下载镜像 docker pull mysql
#我们应该先去Docker Hub寻找我们感兴趣的镜像
docker pull image_name[:Tag]
#1、tag一般为镜像的版本,不指定默认下载latest版本
#2、默认镜像是从Docker Hub下载,国内比较慢,推荐使用自己的阿里云加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 以上下载过程看出,镜像是分层的(Layer)。c499e6d256d6是当前层的唯一id(完整的id为256bit,64个十六进制字符组成)。
- 不同的镜像如果有相同的层,本地只会存储一份,减小了存储空间
- 严格说,下载镜像需要制定指定仓库名称,不过从Docker Hub下载的可以忽略前缀。如
- docker pull **docker.io/library/**mysql:5.7
2、列出镜像 docker images
docker images
REPOSITORY:来源于哪个仓库
TAG:镜像版本标签信息
IMAGE ID :镜像唯一id
CREATED:镜像最后更新时间
SIZE:镜像大小
3、查看详情 docker inspect
docker inspect image_name[:tag]
docker inspect image_id
4、删除镜像 docker rmi
docker rmi image_name[:tag] 或者 docker rmi image_id
5、理解镜像
1、疑问一:
Docker每一个容器都是一个完整的这个应用的运行环境。所有应用最起码的基本环境是linux
SB微服务做成镜像。基本环境就是java环境,
如果我下载了100个镜像,启动了100个容器。100个linux在运行?
UFS:特点;git。增量记录文件改变。分层系统。需要经常读写变化的,只在变化层。
2、容器操作
1、启动容器
#docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 常用选项
-d 守护态运行
-p Publish a container's port(s) to the host ( container和host端口映射)
-i 以交互模式运行容器,通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name="nginx-lb" 为容器指定一个名称
-v, --volume value Bind mount a volume (default [])
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name hello-mysql mysql:5.7
#查看所有运行中的容器
docker ps
#查看所有容器
docker ps -a
#docker create 和 docker run的区别
docker create -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name hello-mysql mysql:5.7
#create新建容器,run新建并启动。create相当于 run -d设置
2、进入容器
#docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
#Run a command in a running container
docker exec -it hello-mysql /bin/bash
#尝试连接MySQL
mysql -uroot -p123456
#扩展
docker exec -d hello-mysql touch /hello.txt
docker exec -it hello-mysql mysql -uroot -p
#删除
docker rm container_id/container_name
#查看运行日志
docker logs container_id/container_name
3、其他命令 Docker 命令手册
5、可视化 Portainer(先用这个)
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
Rancher(CI/CD再用这个)
#安装rancher-server
docker run --name rancher-server -p 8000:8080 -v /etc/localtime:/etc/localtime:ro -d rancher/server
#安装agent
docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://39.101.191.131:8000/v1/scripts/D3DBD43F263109BB881F:1577750400000:7M0yBzCw4XSxJklD7TpysYIpI
来源:oschina
链接:https://my.oschina.net/u/3831863/blog/4321914