一个简单介绍使用Docker
docker
Install
For Ubuntu
1 | # 就这一个命令就可以了 |
首先清除原有的docker
1 | for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done |
更新库
1 | sudo apt-get update |
安装docker
1 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
运行示例程序
1 | sudo docker run hello-world |
For CentOS
首先清除原有的docker
1 | sudo yum remove docker \ |
更新库
1 | sudo yum install -y yum-utils |
安装docker
1 | sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
运行docker
1 | sudo systemctl start docker |
开机自启动docker
1 | sudo systemctl enable docker |
配置加速
1 | sudo mkdir -p /etc/docker |
卸载docker
1 | sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras |
Docker 容器
Docker 命令
查看
docker ps
查看运行的docker容器
docker ps -a
查看所有的docker容器
docker container inspect container_name/container_id
查看容器的信息,如网关
下载镜像
docker search mirror:tag
1 | sudo docker search nginx |
docker pull mirror:tag
1 | # 默认lates |
docker images
1 | sudo docker images |
docker rmi mirror_name/mirror_id
1 | sudo docker rmi e7 |
启动容器
docker run option mirror_name/mirror_id
1 | sudo docker run -d --name my_container -p 80:80 -v /home/lnpbqc/html:/usr/share/nginx/html nginx |
使用 -d 表示后台
使用 -p 表示使用端口映射,本机端口:容器端口
使用 –name 来设置容器名
使用 -v 来实现目录挂载 本主机目录 到 目的容器目录
docker exec option container_name/container_id environ
1 | sudo docker exec -it my_container /bin/bash |
使用 -it 表示以交互模式进入
以 bash 进行容器交互
docker rm option container_name/container_id
1 | sudo docker rm 592 |
使用 -f 可以强制删除正在运行的容器
docker stop container_name/container_id
1 | sudo docker stop 592 |
docker start container_name/container_id
1 | sudo docker start 592 |
docker restart container_name/container_id
1 | sudo docker restart 592 |
docker stats container_name/container_id
1 | sudo docker stats 592 |
docker logs container_name/container_id
1 | sudo docker logs 592 |
保存镜像
docker commit option container_name/container_id mirror:tag
1 | sudo docker commit -a lnpbqc -m "message" -p true mynginx mynginx:latest |
使用 -a 指定作者
使用 -m 添加信息
使用 -p 让提交时停止容器(默认为true)
docker save option mirror:tag
1 | sudo docker save -o mynginx.tar mynginx:latest |
使用 -o 指定生成文件名
docker load option
1 | sudo docker -i mynginx.tar |
使用 -i 指定加载镜像文件
分享
docker login
首先要有dockerhub网站账号
1 | sudo docker login |
docker tag sourcee_mirror:tag target_mirror:tag
因为dockerhub上的镜像名需要是用户名加原来镜像
1 | sudo docker tag mynginx:latest lnpbqc/mynginx:latest |
docker push mirror/mirror_id:tag
1 | sudo docker push lnpbqc/mynginx:latest |
存储
目录挂载可见前面的 docker run
::: info
通过目录挂载后,不管是修改外面目录还是容器内的目录都会相互影响的
:::
卷映射
不同于上面的目录挂载,因为上面那样挂载不会创建文件,只是会有一个这样的文件目录。
如果映射配置文件,在挂载的时候没有,则容器运行的时候会因为没有配置文件而退出。
1 | sudo docker run -d -v ngconf:/etc/nginx --name mynginx nginx |
这个的 -v 后面跟一个卷名 ngconf,它位于 /var/lib/docker/volumes/<卷名>
使用以下方式管理卷
1 | # 查看 |
网络
自定义网络
- docker在创建容器的时候为每个容器分配一个ip,加入默认的网关 docker0 ,使用 容器ip+容器端口 即可互相访问
- docker0 是网络 bridge
因为ip可能会变化,因为需要创建自定义网络,而容器名就是稳定的域名
1 | # 创建网络 |
在容器内就可以以容器名对同一个网络下的另一容器访问
1 | sudo docker exec -it app1 bash |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lnpbqc!