1 配置镜像加速器
国内从Docker Hub拉去镜像会遇到困呐,通过配置国内镜像加速器。
由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到 docker-practice/docker-registry-cn-mirror-test 查看。
以网易云镜像服务 https://hub-mirror.c.163.com 为例进行介绍。
请首先执行以下命令,查看是否在 docker.service 文件中配置过镜像地址。
$ systemctl cat docker | grep ‘–registry-mirror’
如果该命令有输出,那么请执行 $ systemctl cat docker 查看 ExecStart= 出现的位置,修改对应的文件内容去掉 --registry-mirror 参数及其值,并按接下来的步骤进行配置。
如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
{
“registry-mirrors”: [
“https://hub-mirror.c.163.com”,
“https://mirror.baidubce.com”
]
}
这里还可以配置科大的镜像:
2 镜像和容器生存操作
2.1 镜像
docker images ls #查看镜像
docker rmi centos:latest #删除镜像
【批量删除镜像】
删除所有仓库名为 redis 的镜像:
docker image rm $(docker image ls -q redis) # 可以使用 docker image ls -q 来配合使用 docker image rm,这样可以成批的删除希望删除的镜像。
2.2 容器
sudo docker ps #查看正在运行的容器
创建容器:$ sudo docker run [参数列表] 使用的镜像名称或ID /bin/bash
sudo docker run -it --name=mycentos7_inter centos /bin/bash # 创建容器 sudo docker rm mycentos7_inter # 删除之前为容器创建的名称 exit # 退出容器进入Linux宿主机 sudo docker exec -it container_name (或者 container_id) /bin/bash #重新进入容器
停止与启动容器:
sudo docker stop mycentos7_daemon #停止正在运行的容器:docker stop 容器名称或者ID sudo docker start mycentos7_daemon #启动已运行过的容器 sudo docker restart ...
后台运行容器
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
如果不使用 -d 参数运行容器。
$ docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"hello world hello world hello world hello world
容器会把输出的结果 (STDOUT) 打印到宿主机上面
如果使用了 -d 参数运行容器。
$ docker run -d ubuntu:18.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”
77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a
此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。
使用-d启动容器后,会回到host终端;此时如果想要获取容器的输出信息,可以通过 docker container logs 命令。
$ docker container logs [container ID or NAMES]hello world hello world hello world
进入容器–exec
sudo docker exec -it nginx-test /bin/bash
在使用 -d 参数时,容器启动后会进入后台,启动完容器之后会停在host端;某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令。
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
【实例】
$ docker run -dit ubuntu69d137adef7a8a689cbcb059e94da5489d3cddd240ff675c640c8d96e84fe1f6 $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES69d137adef7a ubuntu:latest "/bin/bash" 18 seconds ago Up 17 seconds zealous_swirles $ docker exec -i 69d1 bash ls bin boot dev...$ docker exec -it 69d1 bash root@69d137adef7a:/#
删除容器:可以使用 docker container rm 来删除一个处于终止状态的容器。
批量删除所有已经退出的容器
$ docker rm -v $(docker ps -aq -f status=exited)
导出容器:
$ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES7691a814370e ubuntu:18.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test $ docker export 7691a814370e > ubuntu.tar #到处容器快照到本地文件
导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,例如
$ cat ubuntu.tar | docker import - test/ubuntu:v1.0$ docker image ls REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB
3 容器部署应用
docker安装部署:https://www.runoob.com/docker/docker-install-nginx.html
在Docker容器中 部署应用程序,就相当于是安装软件。
以安装如下应用程序程序为例:
MySQL
Tomcat
Redis
Ngdis
3.1 MySQL容器部署
查看一下当前Linux主机中有哪些镜像及容器:
首先查看当前Linux主机中有哪些镜像及服务器:
# 查看镜像 $ sudo docker images # 查看容器 $ sudo docker ps -a # 查看全部容器 # 搜索一下mysql有哪些镜像 $ sudo docker search mysql
拉取镜像
# Linux宿主机中操作:拉取MySQL的镜像,如果有了就不需要再拉取了$ sudo docker pull centos/mysql-57-centos7 #这个换成自己的
创建容器
# Linux宿主机中操作:使用镜像创建mysql守护式容器,并进行端口映射,同时配置环境变量$ sudo docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
参数说明:
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,就是创建交互式容器了。)。
-i:表示运行容器
–name :为创建的容器命名。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 容器中的MySQL的root用户密码,作为root用户远程登陆之用
交互操作容器中的MySQL
# 登录进容器 $ sudo docker exec -it mysql /bin/bash # 登录容器里面的mysql,登录后,默认使用的是容器的root用户 mysql -u root -p # 在容器中使用root用户登录的话,不需要输入密码,密码写为空
参数说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
后台运行容器
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
如果不使用 -d 参数运行容器。
$ docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"hello world hello world hello world hello world
容器会把输出的结果 (STDOUT) 打印到宿主机上面
如果使用了 -d 参数运行容器。
$ docker run -d ubuntu:18.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”
77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a
此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。
使用-d启动容器后,会回到host终端;此时如果想要获取容器的输出信息,可以通过 docker container logs 命令。
$ docker container logs [container ID or NAMES]hello world hello world hello world
测试安装成功
3.2 安装Nginx
首先查看当前Linux主机中有哪些镜像及服务器:
# 查看镜像 $ sudo docker images # 查看容器 $ sudo docker ps -a # 查看全部容器 # 搜索一下mysql有哪些镜像 $ sudo docker search mysql
安装镜像
选取安装版本;
docker pull nginx:latest运行容器
安装完成后,我们可以使用以下命令来运行 nginx 容器: $ docker run --name nginx-test -p 8080:80 -d nginx
参数说明:
–name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
交互操作
sudo docker exec -it nginx-test /bin/bash
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/4491.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~