Docker实验环境部署
简单介绍Docker的常用命令。
软件:
VMware:CentOS 7 3.10.0-957.el7.x86_64的版本
Docker 安装
环境部署
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0
'永久关闭核心功能'
[root@localhost ~]# sed -i "7s/enforcing/disabled/" /etc/selinux/config
[root@localhost ~]# cat /etc/selinux/config
....
SELINUX=disabled
安装Docker引擎依赖包
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
设置阿里云镜像源
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
'在阿里云的yum源点中下载repo配置文件'
'生成的为置在本机的/etc/yum.d/目录下'
'只有在下载完docker-ce.repo配置文件后,才可以正常安装Docker-CE(社区版Docker引擎)'
安装Docker-CE引擎
[root@localhost ~]# yum install -y docker-ce
注:这里安装可能会报错误软件包Error: Package: 3:docker-ce-20.10.5-3.el7.x86_64 (docker-ce-stable)
安装contain-SElinux包,就可以了
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
开启Docker,并设置为开启自启
[root@localhost ~]# systemctl start docker.service
[root@localhost ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
网络优化
[root@localhost docker]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@localhost docker]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost ~]# service network restart
Restarting network (via systemctl): [ 确定 ]
[root@localhost ~]# systemctl restart docker
镜像加速
这里我使用的镜像加速地址是在阿里云官方申请的
注意:镜像加速加载完成后需要重启进程和docker
[root@controller ~]# sudo mkdir -p /etc/docker
[root@controller ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://vaxh0chj.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://vaxh0chj.mirror.aliyuncs.com"]
}
[root@controller ~]# sudo systemctl daemon-reload
[root@controller ~]# systemctl restrat docker
Unknown operation 'restrat'.
[root@controller ~]# systemctl restart docker
Docker 基础命令
查询Docker版本
语句:docker version, docker info
[root@controller ~]# docker version
Client: Docker Engine - Community
Version: 20.10.5
API version: 1.41
Go version: go1.13.15
Git commit: 55c4c88
Built: Tue Mar 2 20:33:55 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.5
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 363e9a8
Built: Tue Mar 2 20:32:17 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0
镜像基本操作命令
镜像搜索
语句:docker search 关键字
[root@controller ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 14535 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1980 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 809 [OK]
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 158
.....
下载镜像
语句:docker pull 关键字
[root@controller ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
45b42c59be33: Pull complete
8acc495f1d91: Pull complete
ec3bd7de90d7: Pull complete
19e2441aeeab: Pull complete
f5a38c5f8d4e: Pull complete
83500d851118: Pull complete
Digest: sha256:f3693fe50d5b1df1ecd315d54813a77afd56b0245a404055a946574deb6b34fc
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
查看镜像
格式:docker images
[root@controller ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 35c43ace9216 2 weeks ago 133MB
查看镜像信息
格式: docker inspect 镜像ID
注:借助IMAGE ID标签 详细查看镜像信息
[root@controller ~]# docker inspect 35c43ace9216
[
{
"Id": "sha256:35c43ace9216212c0f0e546a65eec93fa9fc8e96b25880ee222b7ed2ca1d2151",
"RepoTags": [
"nginx:latest"
],
"RepoDigests": [
"nginx@sha256:f3693fe50d5b1df1ecd315d54813a77afd56b0245a404055a946574deb6b34fc"
],
"Parent": "",
"Comment": "",
"Created": "2021-02-17T19:20:26.056161789Z",
"Container": "51caab8ab3beefe704d8b6fbe7653b2c7df216cd44787aca26bc5c6a2e2e9414",
"ContainerConfig": {
"Hostname": "51caab8ab3be",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {
}
.......
添加镜像标签
格式:docker tag 镜像标签 新标签
[root@controller ~]# docker tag nginx:latest nginx:web1
[root@controller ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 35c43ace9216 2 weeks ago 133MB
nginx web1 35c43ace9216 2 weeks ago 133MB
删除镜像
格式:docker rmi 镜像标签
注:因为此处有两个相同的镜像,所以删除的只是别名,如果把最后一个也删除,那镜像也会被删除
[root@controller ~]# docker rmi nginx:web1
Untagged: nginx:web1
[root@controller ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 35c43ace9216 2 weeks ago 133MB
镜像输出
格式:docker save -o 导出的文件名 镜像标签
[root@controller ~]# docker save -o nginx11 nginx:latest
[root@controller ~]# ls
anaconda-ks.cfg nginx11 vi
镜像导入
格式:docker load < 镜像文件
'先删除nignx镜像'
[root@controller ~]# docker rmi 35c43ace9216
Untagged: nginx:latest
Untagged: nginx@sha256:f3693fe50d5b1df1ecd315d54813a77afd56b0245a404055a946574deb6b34fc
Deleted: sha256:35c43ace9216212c0f0e546a65eec93fa9fc8e96b25880ee222b7ed2ca1d2151
Deleted: sha256:61f2666cb67e4572a31412367fa44567e6ac238226385762ea65670ed39034a8
Deleted: sha256:622fb7fb6a35078e3a2d446bb0e74c6a0cd500e3a211fd17ecbbcea5377ded38
Deleted: sha256:69a8591f1aaa7d694fa79a187886f6690e6e51e8c2bc91727be01a9e87daacd2
Deleted: sha256:8a451c701633832102e10093db7545eada8e5639a1b35bb14afaf48601948802
Deleted: sha256:2edbde38832e9e0e07d113df74817dc736fd49ea2f9c0d7ce8e40e3446b49b82
Deleted: sha256:9eb82f04c782ef3f5ca25911e60d75e441ce0fe82e49f0dbf02c81a3161d1300
[root@controller ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
'再导入'
[root@controller ~]# docker load < nginx11
9eb82f04c782: Loading layer 72.49MB/72.49MB
ffd3d6313c9b: Loading layer 64.73MB/64.73MB
9b23c8e1e6f9: Loading layer 3.072kB/3.072kB
0f804d36244d: Loading layer 4.096kB/4.096kB
9f65d1d4c869: Loading layer 3.584kB/3.584kB
2acf82036f38: Loading layer 7.168kB/7.168kB
Loaded image: nginx:latest
[root@controller ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 35c43ace9216 2 weeks ago 133MB
容器操作基本命令
容器列表查询
格式:docker ps -a (-a 列出最近一次启动的容器)
[root@controller ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
创建容器
格式:docker create -it 选项 /bin/bash
-i 让容器的标准输入保持打开
-t 让Docker分配一个伪终端
[root@controller ~]# docker create nginx:latest /bin/bash
a446668bf34030eb9ec378646fe3149e152f627b4703132944eab5adc6ca098d
[root@controller ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a446668bf340 nginx:latest "/docker-entrypoint.…" 8 seconds ago Created inspiring_dubinsky
'/bin/bash 指定终端'
'statys :created 创建状态,暂时还未开启'
'container id 容器ID'
启动容器
格式:docker start 容器ID
[root@controller ~]# docker start a446668bf340
a446668bf340
[root@controller ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a446668bf340 nginx:latest "/docker-entrypoint.…" About a minute ago Exited (0) 6 seconds ago inspiring_dubinsky
一次性执行容器操作
格式:docker run 镜像名称 操作指令
[root@controller ~]# docker run centos:7 /usr/bin/bash -c ls /
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
注:如果不希望执行完命令后结束进程,可以给一条循环语句命令
docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"
进入容器
格式:
① docker run -it 容器名 容器环境
② 在容器为运行状态下:docker exec -it 容器ID 容器环境
[root@controller ~]# docker run -it nginx:latest /bin/bash
root@4a78ef8cd814:/#
root@4a78ef8cd814:/#
root@4a78ef8cd814:/# exit
exit
容器导出、导入
格式:
① docker export 容器ID > 导出的容器名 (容器导出)
②cat 容器名 | docker import - 镜像名 (生成镜像,不会生成容器)
root@controller ~]# docker export a446668bf340 > centos_nginx
[root@controller ~]# ls
anaconda-ks.cfg centos_nginx nginx vi
容器删除
格式:docker rm 容器ID (必须先停止再删除)
[root@controller ~]# docker rm 4a78ef8cd814
4a78ef8cd814
如果想批量删除容器,可借助正则表达式(不会删除没有关闭的容器哦)
docker ps -a | awk '{print "docker rm " $1}' | bash
'注:遍历容器ID,依次删除,但如果有UP状态的容器则会报错'